我有一个问题。
这是一个简短的例子。 这是模特。
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);
}
答案 0 :(得分:25)
它不会改变,因为默认情况下(许多人认为这是一个错误)MVC将忽略你在HttpPost
中返回时对模型所做的更改视图。相反,它会在ModelState
中查找最初提供给视图的值。
为了防止这种情况发生,您需要清除ModelState
,您可以在HttpPost
的顶部执行此操作:
ModelState.Clear();