2013-04-05 54 views
0

我想弄清楚为什么这个简单的控制器操作不起作用。我试图做的是每次POST后增加Number简单模型绑定不工作整数

型号

public class ViewModel 
{ 
    public int Number { get; set; } 
} 

查看

<body> 

    <% using (Html.BeginForm("Test", "Invoice")) 
    { %> 
     <%: Html.EditorFor(m => m.Number) %> 
     <%= Model.Number %> 
     <input type="submit" value="Submit" /> 
    <% } %> 

</body> 

控制器

public ActionResult Test() 
{ 
    var viewModel = new ViewModel {Number = 1}; 
    return View("Test", viewModel); 
} 

[HttpPost] 
public ActionResult Test(ViewModel viewModel) 
{ 
    viewModel.Number = viewModel.Number + 1; 
    return View("Test", viewModel); 
} 

在我的控制器,viewModel.Number增加到2,而是返回视图时文本框中包含1Model.Number显示2.

我缺少的东西?

回答

0

Html助手赞成ModelState中实际模型值的值。

因此,如果您修改模型在你的行动,你需要将它传递给视图之前清除ModelSate

[HttpPost] 
public ActionResult Test(ViewModel viewModel) 
{ 
    viewModel.Number = viewModel.Number + 1; 
    ModelState.Clear(); 
    return View("Test", viewModel); 
} 

您可以这篇大文章中了解更多关于这个ASP.NET MVC功能:

ASP.NET MVC Postbacks and HtmlHelper Controls ignoring Model Changes

+0

非常感谢 - 我知道它必须是小事。伟大的文章也可以参考。 – SlimCharles 2013-04-05 20:36:22