谁能给我一个关于 Asp.net MVC 中 ModelState 角色的简洁定义(或者一个链接)。特别是我需要知道在什么情况下需要或者需要调用 ModelState.Clear()
。
有点开放哈... 对不起,我想如果告诉你我实际上在做什么可能会有帮助:
我有一个动作的编辑控制器称为“页面”。当我第一次看到用于更改页面细节的表单时,所有东西都能正常加载(绑定到一个“ MyCmsPage”对象)。然后单击一个按钮,该按钮为 MyCmsPage 对象的一个字段(MyCmsPage.SeoTitle
)生成一个值。它生成 fine 并更新对象,然后我返回新修改的页面对象的操作结果,并期望相关的文本框(使用 <%= Html.TextBox("seoTitle", page.SeoTitle)%>
渲染)被更新... ... 但可惜的是,它显示了加载的旧模型的值。
我已经通过使用 ModelState.Clear()
解决了这个问题,但是我需要知道为什么/如何解决这个问题,所以我不会盲目地去做。
页面控制器:
[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>