2013-05-07 23 views
14

問題が1つあります。ポストリクエストでモデルプロパティを変更する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の中で最初にビューに提供された値を探します。

はこれを防ぐために、あなたが行うことで、あなたのHttpPostの上部に行うことができますModelStateをクリアする必要があります。http://stackoverflow.com/:

ModelState.Clear(); 
+9

をまた、この回答を参照してくださいa/4896336/1869660 'ModelState'全体を消去したくない場合は、代わりに' ModelState.Remove( "Title") 'を呼び出すことができます。 – Sphinxxx

関連する問題