【问题标题】:Change model property in post request asp.net mvc在发布请求 asp.net mvc 中更改模型属性
【发布时间】:2013-05-07 12:02:52
【问题描述】:

我有一个问题。

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    ModelState.Clear();
    

    【讨论】:

    • 另外,看到这个答案:stackoverflow.com/a/4896336/1869660 如果你不想清除整个ModelState,你可以打电话给ModelState.Remove("Title")
    • 所以这是一个故意的错误。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-06
    • 1970-01-01
    相关资源
    最近更新 更多