我有一个自定义模型,它包含另一个自定义对象(Objects1.Object2),我在视图中显示之前正确填充对象并且
<%:Model.Object1.Name%>正确显示数据 <%:Html.TextBoxFor(model => model.Object1.Name)%>不显示数据。
我是MVC的新手,很想解决这个问题,因为它是创建自定义数据模型的一个停止点。
非常感谢任何信息。
答案 0 :(得分:2)
您是否尝试在POST操作中修改此内容?如果您注意到TextBoxFor
之类的HTML帮助程序将首先从模型状态读取数据,然后从模型中读取数据。因此,如果您的帖子操作如下所示:
[HttpPost]
public ActionResult Index(SomeViewModel model)
{
model.Object1.Name = "some new value";
return View(model);
}
您需要将其从模型状态中删除,否则您将始终获得旧值:
[HttpPost]
public ActionResult Index(SomeViewModel model)
{
ModelState.Remove("Object1.Name");
model.Object1.Name = "some new value";
return View(model);
}
如果您在GET操作中执行此操作,则显示值绝对不会出现任何问题:
public ActionResult Index()
{
var model = new SomeViewModel
{
Object1 = new TypeOfObject1
{
Name = "foo bar"
}
};
return View(model);
}
然后在视图中:
<%= Html.TextBoxFor(x => x.Object1.Name) %>
应显示正确的值。