Изменить свойство модели в почтовом запросе asp.net mvc
У меня есть одна проблема.
Это короткий пример.
Это модель.
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
Он не изменится, потому что по умолчанию (многие считают, что это ошибка). MVC будет игнорировать изменения, которые вы делаете для модели в HttpPost
, когда вы возвращаете тот же вид. Вместо этого он выглядит в ModelState
для значения, которое изначально было передано в представление.
Чтобы предотвратить это, вам нужно очистить ModelState
, который вы можете сделать в верхней части своего HttpPost
, выполнив:
ModelState.Clear();