2013-06-20 3 views
1

У меня есть простой пост-действие, которое пытается вернуть новую модель обратно в представление из метода post. Почему-то, когда я возвращаю новую модель, я всегда вижу модель, которую я опубликовал, и почему это происходит? Мне нужно изменить значения модели в post post и вернуть их пользователю, но по какой-то причине я не могу это сделать?ASP.NET MVC Post Возвращает неправильные значения модели

public ActionResult Build() 
{ 
    return View(new Person()); 
} 

[HttpPost] 
public ActionResult Build(Person model) 
{ 
    return View(new Person() { FirstName = "THX", LastName = "1138" }); 
} 

Это код вида;

@using (Html.BeginForm()) { 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true) 

    <fieldset> 
     <legend>Person</legend> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.FirstName) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.FirstName) 
      @Html.ValidationMessageFor(model => model.FirstName) 
     </div> 

     <div class="editor-label"> 
      @Html.LabelFor(model => model.LastName) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => model.LastName) 
      @Html.ValidationMessageFor(model => model.LastName) 
     </div> 

     <p> 
      <input type="submit" value="Create" /> 
     </p> 
    </fieldset> 
} 

Если я открываю форму и введите «Джон» для имени и «Смит» для фамилии и опубликовать форму, я получаю «Джон», «Смит» назад от почтового действия, а не «THX 1138 "есть ли способ переопределить это поведение? Я также хотел бы знать, почему это так?

+0

где находится код, указывающий на кнопку для вызова 'действия Build' представить? – jbabey

+0

Можете ли вы показать сгенерированный HTML? –

+0

Вы поставили точку останова в «public ActionResult Build (Person model)», чтобы убедиться, что это метод действия, к которому привязаны? – Rob

ответ

4

Вы можете сделать это, поручив ASP.NET MVC забыть отправленные значения путем добавления this.ViewData = null; к вашему сообщению действия:

[HttpPost] 
public ActionResult Build(Person model) 
{ 
    this.ViewData = null; 

    return View(new Person() { FirstName = "THX", LastName = "1138" }); 
} 
Смежные вопросы