在post request asp.net mvc中更改模型属性

时间:2013-05-07 12:02:53

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

我有一个问题。

这是一个简短的例子。 这是模特。

    public class MyModel
    {
         string Title{get;set;}
    }

在视图中我写

@Html.TextBoxFor(model => model.Title)

这是控制器。

    public ActionResult EditNews(int id)
    {
        var model = new MyModel;
        MyModel.Title = "SomeTitle"

        return View("News/Edit", model);
    }
    //for post
    [HttpPost]
    public ActionResult EditNews(MyModel model)
    {
        //There is  problem.When I do postback and
        // change Title in this place,Title  doesn't change in view textbox
        //Only when I reload page it change.
        model.Title = "NEWTITLE"

        return View("News/Edit", model);
    }

1 个答案:

答案 0 :(得分:25)

它不会改变,因为默认情况下(许多人认为这是一个错误)MVC将忽略你在HttpPost中返回时对模型所做的更改视图。相反,它会在ModelState中查找最初提供给视图的值。

为了防止这种情况发生,您需要清除ModelState,您可以在HttpPost的顶部执行此操作:

ModelState.Clear();