自定义ViewModel不在TextBoxFor TextBoxFor(Model => Model.Object1.Name)中显示值

时间:2011-04-10 20:48:07

标签: asp.net asp.net-mvc-2

我有一个自定义模型,它包含另一个自定义对象(Objects1.Object2),我在视图中显示之前正确填充对象并且

<%:Model.Object1.Name%>正确显示数据 <%:Html.TextBoxFor(model => model.Object1.Name)%>不显示数据。

我是MVC的新手,很想解决这个问题,因为它是创建自定义数据模型的一个停止点。

非常感谢任何信息。

1 个答案:

答案 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) %>

应显示正确的值。