2008-11-28 67 views
2

我創建了一個具有性能強類型LocationViewData強類型的ViewData

public Location location { get; set; } 

Location本身的模式,用性能AddressCountry,等等。

在控制器中,我有:

public ActionResult Edit(int id) 
{ 
    LocationViewData ld = new LocationViewData(); 
    ... 
    return View(ld); 
} 

在視圖代碼隱藏我:

public partial class Edit : ViewPage<MvcTest.Models.LocationViewData> 
{ 
} 

我的問題是:我怎樣才能讓我的ViewDataLocation模型的屬性顯示在相應的文本框中,如:

<%=Html.TextBox("address") %> 

我做不想用全名來指定每個字段:

<%=Html.TextBox("address", ViewData.Model.location.address) %> 

回答

1

它已經正常工作。啓動一個新的MVC(測試版1)項目,並把這個「家庭」控制的「指數」行動:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     this.ViewData.Model = new MyObject 
     { 
      Name = "Timmy", 
      FavColor = "Blue", 
     }; 

     return View(); 
    } 

    public class MyObject 
    { 
     public string Name { get; set; } 

     public string FavColor { get; set; } 
    } 
} 

現在,把這個視圖:

<%=Html.TextBox("FavColor") %> 

這會在裏面說「藍色」。它試圖通過名稱綁定(MVC檢查了幾個地方,其中之一是「模型」)。

編輯:你需要做的是:

  1. 確保「位置」是一個屬性,而「地址」是一個屬性。

  2. 把「location.address」作爲名字......不僅僅是「地址」。

+0

你二路方式,將設置文本框的名字是location.address,並在提交給控制器,它不能映射到控制器方法的「字符串地址參數」 – complez 2008-11-28 16:07:28