返回修改后的viewModel进行查看

时间:2012-06-06 19:05:26

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

我想做这样的事情:

[HttpPost]
public ActionResult Index(Foo foo)
{
    foo.Name = "modified";

    return View(foo);
}

但是当渲染我的视图时,它总是具有旧值!我该如何修改并返回?我必须每次都清除ModelState吗?


我的观点:

@model MvcApplication1.Models.Foo


@using (Html.BeginForm())
{
    @Html.TextBoxFor(m => m.Name)
    @Html.TextBoxFor(m => m.Description)

    <input type="submit" value="Send" />
}

2 个答案:

答案 0 :(得分:4)

我认为这可能是预期的行为,因为将相同模型发送回视图的“正常”方案是模型出错时。

请参阅:http://blogs.msdn.com/b/simonince/archive/2010/05/05/asp-net-mvc-s-html-helpers-render-the-wrong-value.aspx

答案 1 :(得分:0)

MVC在回发时使用ModelState填充View,而不是传递的模型。要在返回视图之前更新单个字段,请尝试以下操作:

ideal_ckt = signal.ZerosPolesGain([],[-p1*1],[gain*p1])

此处有更多信息:ModelStateDictionary.SetModelValue()