2013-05-07 4 views
14

Ho un problema.Modifica la proprietà del modello in post richiesta asp.net mvc

Questo è un breve esempio. Questo è il modello.

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

Tenuto scrivo

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

Questo è regolatore.

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

risposta

24

Non cambierà perché per impostazione predefinita (molti pensano che questo è un bug) MVC sarà ignora le modifiche apportate al modello in un HttpPost quando si sta tornando la stessa vista. Invece, appare nel ModelState per il valore originariamente servito alla vista.

Al fine di evitare questo, è necessario cancellare la ModelState, che si può fare nella parte superiore del vostro HttpPost facendo:

ModelState.Clear(); 
+9

Inoltre, questa risposta: http://stackoverflow.com/ a/4896336/1869660 Se non si desidera cancellare l'intero 'ModelState', è possibile richiamare' ModelState.Remove ("Title") '. – Sphinxxx