Может ли кто-нибудь дать мне краткое определение роли ModelState в MVC Asp.net(или ссылку на один). В частности, мне нужно знать, в каких ситуациях необходимо или желательно называть ModelState.Clear()
.
Бит с открытым концом huh... извините, я думаю, что это может помочь, если вы скажете, что я делаю:
У меня есть действие редактирования на контроллере под названием "Страница". Когда я впервые вижу форму для изменения данных страницы, все загружается отлично (привязка к объекту "MyCmsPage" ). Затем я нажимаю кнопку, которая генерирует значение для одного из полей объекта MyCmsPage (MyCmsPage.SeoTitle
). Он генерирует штраф и обновляет объект, а затем возвращаю результат действия с недавно измененным объектом страницы и ожидаем обновления соответствующего текстового поля (с помощью <%= Html.TextBox("seoTitle", page.SeoTitle)%>
)... но, увы, оно отображает значение из старой модели, которая была загружен.
Я работал над этим, используя ModelState.Clear()
, но мне нужно знать, почему и как он работал, поэтому я не просто делаю это вслепую.
PageController:
[AcceptVerbs("POST")]
public ActionResult Edit(MyCmsPage page, string submitButton)
{
// add the seoTitle to the current page object
page.GenerateSeoTitle();
// why must I do this?
ModelState.Clear();
// return the modified page object
return View(page);
}
Aspx:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyCmsPage>" %>
....
<div class="c">
<label for="seoTitle">
Seo Title</label>
<%= Html.TextBox("seoTitle", page.SeoTitle)%>
<input type="submit" value="Generate Seo Title" name="submitButton" />
</div>