У меня есть маршрут HttpGet
с именем EmailOptions()
, а маршрут HttpPost
также называется EmailOptions(OptionsVm emailOptions)
. В этот момент они возвращают представление с тем же именем (EmailOptions.cshtml
), которое имеет OptionsVm
в качестве модели представления. OptionsVm
содержит объект домена, который имеет несколько логических свойств, а также строку, используемую для отображения сообщения.
Как только я установил для некоторых из OptionsVm
объекта домена bools значение true и post для EmailOptions(OptionsVm emailOptions)
, я установил в строку простое сообщение и сбросил объект домена в новый объект домена (поэтому все, что было установлено как истинное, должно вернуться к ложному).
То, что я ожидаю увидеть, - это та же страница, что и раньше, при этом флажок bool (флажки) не проверяется, единственное изменение - строка с сообщением, которое будет отображаться. Однако, хотя он устанавливает страницу с новым строковым значением, флажки bool сохраняют свое предыдущее проверенное состояние из before и. Я знаю, что это идет к правильному маршруту post (в конце концов, строка задается с новым значением), я просто не понимаю, почему модель домена, похоже, сохраняет свои прежние значения, особенно, как я явно задает модель домена для новой модели домена.
Кажется, мое мнение кешируется? Но это не имеет смысла .. У кого-нибудь есть идея, почему это происходит?
Код:
// controller
public class AController : Controller
{
...
public ActionResult EmailOptions()
{
...
return View(
new OptionsVm {
DomainObj = new DomainObj()
}
)
}
[HttpPost]
public ActionResult EmailOptions(OptionsVm vm)
{
... // don't do anything with the actually passed in OptionsVm
return View(
new OptionsVm {
DomainObj = new DomainObj(),
StringContent = "some message"
}
)
}
}
// viewmodel
public class OptionsVm
{
public BooleanObjs DomainObj { get; set; }
public string MessageSometimes { get; set; }
}