Просмотр не обновляется после публикации - PullRequest
33 голосов
/ 10 марта 2012

У меня есть метод контроллера CreateOrUpdate, этот метод должен сохранить машину в базе данных, а затем вернуть как обычно.

public ActionResult CreateOrUpdate(int ID = 0)
{
    Car car = new Car(ID);
} 

[HttpPost]
public ActionResult CreateOrUpdate(Car car)
{
       car.Save();
       return View(car);
}

В методе Car.Save () я устанавливаю идентификатор автомобиля, каким бы ни был идентификатор в базе данных после сохранения автомобиля (при выполнении вставки я использую SCOPE_IDENTITY (), метод сохранения работает хорошо , и если я отлаживаю и наблюдаю значения для car после вызова Save (), идентификатор правильный, но когда рендеринг представления отображается, идентификатор равен 0 в представлении.

Может ли кто-нибудь помочь мне, и скажите мне, почему это произойдет. Разве я не предполагаю изменить модель для представления в методе HTTP POST? Должен ли я скорее перенаправить на оригинальный метод CreateOrUpdate (), если сохранение прошло успешно.

Ответы [ 3 ]

62 голосов
/ 10 марта 2012

это должна быть проблема ModelState.если вы используете Htmlhelper для отображения значения идентификатора.По умолчанию HtmlHelper отображает значение ModelState, а не Model.Попробуйте отобразить значение модели в представлении

<td>
    @Model.id
</td>

или Очистить значение ModelState в контроллере

ModelState.Clear();

или сбросить значение идентификатора после SaveChange.

theCar.Save();
ModelState["id"].Value = theCar.id
return View(theCar);

Сбросзначение текстовой области после отправки формы

2 голосов
/ 24 августа 2015

Я не хотел очищать ModelState, потому что мне нужно было отображать ошибки, поэтому я выбрал

ValueProviderResult vpr = new ValueProviderResult("", null, System.Globalization.CultureInfo.CurrentCulture);

ModelState["id"].Value = vpr;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...