我使用类似
的属性创建了一个强类型LocationViewData
public Location location { get; set; }
Location
本身就是模型,其中包含Address
,Country
等属性。
在控制器中我有:
public ActionResult Edit(int id)
{
LocationViewData ld = new LocationViewData();
...
return View(ld);
}
在视图代码中我有:
public partial class Edit : ViewPage<MvcTest.Models.LocationViewData>
{
}
我的问题是:如何让我Location
中ViewData
模型的属性显示在相应的文本框中,例如:
<%=Html.TextBox("address") %>
我不想以其全名指定每个字段:
<%=Html.TextBox("address", ViewData.Model.location.address) %>
答案 0 :(得分:1)
它已经完全像那样。启动一个新的MVC(beta 1)项目,并将其置于“Home”控制器的“Index”操作中:
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检查一些地方,其中一个是“模型”)。
编辑:你需要做的是:
确保“location”是一个属性,而“address”是一个属性。
将“location.address”作为名称......而不仅仅是“地址”。