2013-05-07 12 views
14

Bir sorunum var.Model özelliğini isteğe bağlı olarak değiştir asp.net mvc

Bu kısa bir örnektir. Bu modeldir. görünümünde

public class MyModel 
    { 
     string Title{get;set;} 
    } 

I Bu kontrol

@Html.TextBoxFor(model => model.Title) 

olan mal. Bu değişmeyecek

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

cevap

24

çünkü varsayılan olarak MVC aynı Görünüm dönen yaparken bir HttpPost yılında modeline yapmak değişiklikleri göz ardı eder (birçok bu bir hata olduğunu düşünüyorum). Bunun yerine, özgün olarak görünümde sunulan değer için ModelState'da görünüyor.

Bunu önlemek için, aşağıdakileri yaparak size sizin HttpPost üstündeki yapabilirsiniz ModelState, temizlemek gerekir: http://stackoverflow.com/:

ModelState.Clear(); 
+9

Ayrıca, bu cevaba bakınız a/4896336/1869660 Tüm 'ModelState'ı temizlemek istemiyorsanız, bunun yerine' ModelState.Remove ("Title") 'diyebilirsiniz. – Sphinxxx

İlgili konular