2023-02-17 373
任何人都可以让我在ASP.NET MVC中的ModelState的角色(或链接)给我一个简洁的定义.特别是我需要知道在哪些情况下,需要或希望调用ModelState.Clear().
bit开放结束huh …对不起,我认为如果告诉你我在大小做什么:
我在一个名为”页面”的控制器上有一个操作.当我第一次看到表单更改页面的详细信息时,所有内容都加载Fine(绑定到”MyCMSpage”对象).然后我单击一个按钮,为一个mycmspage对象的字段(MyCmsPage.SeoTitle)生成值.它会生成精确并更新对象,然后我将动作结果与新修改的页面对象返回,并期望更新相关的文本框(使用<%= Html.TextBox(“seoTitle”, page.SeoTitle)%>呈现)…但是alas它显示了从旧模型中显示的值加载.
我通过使用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>
我认为是mvc中的错误.我今天几个小时挣扎着这个问题.
给出:
public ViewResult SomeAction(SomeModel model)
{
model.SomeString = "some value";
return View(model);
}
视图呈现原始模型,忽略更改.所以我想,也许它不喜欢我使用相同的型号,所以我试过这样的:
public ViewResult SomeAction(SomeModel model)
{
var newModel = new SomeModel { SomeString = "some value" };
return View(newModel);
}
仍然是与原始模型的视图呈现.奇怪的是,当我在视图中放置断点并检查模型时,它具有更改的值.但响应流具有旧值.
最终我发现了与您所做的相同的工作:
public ViewResult SomeAction(SomeModel model)
{
var newModel = new SomeModel { SomeString = "some value" };
ModelState.Clear();
return View(newModel);
}
按预期工作.
我不认为这是一个”功能”,是吗?
更新:
旧答案:
MVC中的模型主要用于描述模型对象的状态,主要是与该对象是否有效. 本教程应该解释很多.
一般来说,您不应该清除ModelState,因为它是由MVC引擎为您维护的.在试图遵守MVC验证最佳实践时,手动清除它可能会导致不期望的结果.
似乎您正在尝试为标题设置默认值.当模型对象被实例化(域层或在对象本身 – 不可分割的CTOR中)时,应该完成这一点,因此它在第1次或完全在客户端(通过AJAX或其他东西)下降到页面因此,它看起来好像用户输入它,它会返回发布的表单集合.有些方法如何在接收表单集合上添加此值(在Post Action//编辑中)导致此奇异行为可能导致.Clear() 出现为您工作.相信我 – 你不想使用清晰.尝试其他一个想法.
如果要清除单个字段的值,那么我发现以下技术有用.
ModelState.SetModelValue("Key", new ValueProviderResult(null, string.Empty, CultureInfo.InvariantCulture));
注意:
将”key”更改为要重置的字段的名称.
以上所述是小编给大家介绍的Asp.net MVC ModelState.Clear,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!
原文链接:https://77isp.com/post/34208.html
=========================================
https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。
数据库技术 2022-03-28
网站技术 2022-11-26
网站技术 2023-01-07
网站技术 2022-11-17
Windows相关 2022-02-23
网站技术 2023-01-14
Windows相关 2022-02-16
Windows相关 2022-02-16
Linux相关 2022-02-27
数据库技术 2022-02-20
抠敌 2023年10月23日
嚼餐 2023年10月23日
男忌 2023年10月22日
瓮仆 2023年10月22日
簿偌 2023年10月22日
扫码二维码
获取最新动态