Представьте себе простое действие с постом
public ActionResult Unsubscribe(string contentId)
{
// get db content and translate it to the UnsubscribeViewModel
UnsubscribeViewModel model =
myRepository.FindUnsubscribeContentById(contentId).ToUnsubscribeViewModel();
// pass model into the view
return View(model);
}
[HttpPost]
public ActionResult Unsubscribe(UnsubscribeViewModel model)
{
// let's convert into DalModel
UnsubscribeModel m = model.ToUnsubscribeModel();
// let's save into the db
myRepository.UpdateUnsubscribe(m);
// because I'm using 2 models, let's get the new ID
// and append to he View model
model.FieldId = m.unsubscribe_id;
// let's return the new model to the View
return View(model);
}
Моя текущая проблема , даже если я делаю точку останова на линии return View(model)
, У меня есть model.FieldId
правильно назначен , но на HTML-странице у меня есть исходное значение (в данном случае 0
, поскольку не было предыдущего идентификатора, это новая запись)
в представлении, которое я пробовал:
<%: Html.HiddenFor(x => x.FieldId) %>
и
<%: Html.Hidden("FieldId", Model.FieldId) %>
, и они по-прежнему имеют значение "0", например
<input type="hidden" value="0" name="FieldId" id="FieldId">
, если яобновите страницу, мое действие извлечет новые данные, и значение изменится на правильный идентификатор.Но если я использую RedirectToAction("Unsubscribe")
, я потеряю данные и не смогу передать сообщение Успех / Ошибка через ViewData
, мне придется использовать RedirectToAction("Unsubscribe", new { something = msg })
, и я не хочу этого.
Почему View загружает исходное значение вместо недавно обновленного значения из модели?
Спасибо.