Это потому, что ModelState
является свойством Controller
, а не тем, что содержит отправленные вами значения формы. Вот что вы хотели бы сделать:
if (ModelState.IsValid)
{
bool isSuccess = _siteService.CreateInquiry(model.Inquiry);
if (isSuccess)
{
model = new ContactUsViewModel(); // modified line
model.SuccessMessage = "Thank you for contacting us.";
}
}
model.InquiryTypes = InquiryTypes;
return View(model);
Свойство Controller.ModelState
, как указано в MSDN:
Получает объект словаря состояний модели, который содержит состояние модели и привязки модели проверка .
Все, что я сделал в своем примере кода, это вынул вызов метода ModelState.Clear()
и вставил model = new ContactUsViewMode();
. Это случайный способ очистки ваших свойств данных ViewModel.
<ч />
Альтернативный процесс
Вы также можете сделать что-то подобное и изменить свою ViewModel:
public class ContactUsViewModel()
{
// ... all of your existing view model members
public void Clear()
{
this.SomeStringProperty = string.Empty;
this.SomeIntProperty = 0;
// ... so on and so forth
}
}
И затем вместо создания нового экземпляра вашего класса ViewModel вы можете просто вызвать Clear()
на существующем экземпляре:
if (ModelState.IsValid)
{
bool isSuccess = _siteService.CreateInquiry(model.Inquiry);
if (isSuccess)
{
model.Clear(); // modified line
model.SuccessMessage = "Thank you for contacting us.";
}
}
model.InquiryTypes = InquiryTypes;
return View(model);