2013-05-07 4 views
14

У меня есть одна проблема.Изменить модель объекта в сообщении 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); 
    } 

ответ

24

Это не изменится, потому что по умолчанию (многие считают, что это ошибка) MVC будет игнорировать изменения, внесенные в модель в HttpPost, когда вы возвращаясь в тот же вид. Вместо этого он выглядит в ModelState для значения, которое изначально было передано в представление.

Для того, чтобы предотвратить это, необходимо очистить ModelState, которые вы можете сделать в верхней части вашего HttpPost, выполнив:

ModelState.Clear(); 
+9

Также см этот ответ: http://stackoverflow.com/ a/4896336/1869660 Если вы не хотите очищать весь «ModelState», вы можете вместо этого вызвать «ModelState.Remove» («Title»). – Sphinxxx

Смежные вопросы