2013-04-05 35 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