Подтвердить что ты не робот

Просмотр после обновления после публикации

У меня есть метод контроллера 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(), метод сохранения работает хорошо, и если я отлаживаю и просматриваю значения для автомобиля после вызова Save(), идентификатор верен. Но когда визуализируется представление, в представлении ID равен 0.

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

4b9b3361

Ответ 1

это должна быть проблема ModelState. если вы используете Htmlhelper для отображения значения id. Default HtmlHelper display ModelState значение не Модель. Попробуйте отобразить значение модели в поле зрения

<td>
    @Model.id
</td>

или значение CleanStartStart в контроллере

ModelState.Clear();

или reset после значения SaveChange.

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

Reset значение textarea после отправки формы

Ответ 2

Я добавил ModelState.Clear() к моему методу HttpPost Controller, как показано в этом сообщении Помощники Html получают данные из состояния модели, а не из модели, если вы возвращаете одно и то же представление после сообщения формы. для получения обновленных данных в представлении используйте post redirect get pattern или ModelState.Clear(), и он решил проблему.

Спасибо

Ответ 3

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

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

ModelState["id"].Value = vpr;