16

我有一个问题。

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

    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);
    }
4

1 回答 1

32

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

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

ModelState.Clear();
于 2013-05-07T12:06:28.990 回答