问题标签 [modelstate]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - 通过异步更新 ValidationSummary - ASP.NET MVC
在我的控制器中,如果模型状态无效
我想更新 ValidationMessage 但不必重新发布视图。似乎是带有验证消息的理想概念。我也在使用 DataAnnotations ,<% Html.EnableClientValidation(); %>
但它仍然发布到控制器,我必须执行此检查。有什么建议的实现吗?
c# - 刷新 ModelState 以消除错误
刷新模型状态
嗨,我有一个关于 ASP.NET MVC 控制器中的 ModelState 的问题。
当用户从视图中选择某个选项时,“认证”的开始日期和结束日期将基于输入的其他日期来设置。
问题是认证日期返回为空,并且我们的 CertificationMetaData 类将字段指定为 [Required],因此一旦加载操作,ModelState 就无效。
手动删除 ModelSate 错误可以让它工作,但我想知道是否有更好的方法来做到这一点?有没有办法刷新 ModelState?我应该使这些字段不需要吗?或者我应该使用 javascript 从视图中添加日期值吗?
正如您所看到的,我已经硬编码了认证类型的 ID 值。将值与查找表值进行比较的最佳方法是什么?枚举是最好的方法吗?
谢谢
c# - POST 后 HTML.CheckBox 保持状态 - 刷新 ModelState?
我有一个由许多项目组成的表格(想想亚马逊订单上的订单项目)。每行都有一个与之关联的复选框,因此用户可以选择许多项目并单击“删除”。
表格的构建有点像这样;
模型活页夹发挥了它的魔力,并且正确填充了列表。但是,在我处理操作中的请求(例如删除适当的项目)并返回包含较少项目的新视图后,表单的状态是“半”持久化。一些复选框保持选中状态,即使在编辑模型中所有布尔值都设置为 false。
如果我返回 a ,我没有这个问题RedirectToActionResult
,但是使用它作为解决方案似乎有点棘手。
我想我需要刷新/刷新 ModelState 或类似的东西,但我不确定要搜索的术语以找出方法。
asp.net-mvc - Asp.net MVC ModelState.Clear
谁能给我一个关于 ModelState 在 Asp.net MVC 中角色的简洁定义(或一个链接)。特别是我需要知道在什么情况下需要或需要调用ModelState.Clear()
.
有点开放,嗯......对不起,我认为如果告诉你我正在做什么可能会有所帮助:
我在一个名为“页面”的控制器上有一个编辑操作。当我第一次看到更改页面详细信息的表单时,一切都加载正常(绑定到“MyCmsPage”对象)。MyCmsPage.SeoTitle
然后我单击一个按钮,该按钮为 MyCmsPage 对象的一个字段 ( )生成一个值。它生成良好并更新对象,然后我使用新修改的页面对象返回操作结果,并期望<%= Html.TextBox("seoTitle", page.SeoTitle)%>
更新相关的文本框(使用 渲染)......但可惜它显示了来自加载的旧模型的值。
我已经通过使用来解决它,ModelState.Clear()
但我需要知道它为什么/如何工作,所以我不只是盲目地这样做。
页面控制器:
ASP:
c# - ModelState.IsValid == false,为什么?
我在哪里可以找到使 ModelState 无效的错误列表?我没有在 ModelState 对象上看到任何错误属性。
asp.net-mvc - 在 ASP.NET MVC 2 中测试模型绑定
第一的; 我知道我不需要测试 MVC 的内部,但我真的需要一个套件来测试流入我们系统的数据。
我希望在不模拟所有 HTTP 上下文的情况下如何测试 objectA(表单集合、字典、集合、对象等)是否符合 objectAModel?
我不想实例化我的控制器或调用动作。我只是想测试我的新对象是否使模型状态无效。
我希望我可以简单地写
asp.net-mvc - 如何从模型状态中获取错误消息
我正在使用
以及如何在控制器本身中获取此模型状态值。
就像我需要在控制器中获取“测试”的错误消息。
asp.net-mvc - ASP.NET MVC:DataAnnotations - 显示指示字段必须是数字的错误消息
DataAnnotations 的工作方式似乎存在一些漏洞,因为用户将一些文本输入到将进入 int 的字段中将永远无法到达 DataAnnotations 代码。它启动模型绑定错误并向用户显示错误“值'a'对于 XXXX 字段无效。”
无论如何,它自动处理这种情况非常好,但我实际上想显示一条指示问题的错误消息,例如。“值 'a' 不是数字。请在 XXXX 字段中输入数字值”。
我已经尝试了如何替换 Asp.net MVC 2 中的默认 ModelState 错误消息中的解决方案?和ASP.NET MVC - 值类型的自定义验证消息,但我无法让它们工作。
看来我的资源文件根本没有被读取,因为在这里(http://msdn.microsoft.com/en-us/library/system.web.mvc.defaultmodelbinder.resourceclasskey.aspx)它声明“如果属性设置为无效的类键(例如不存在的资源文件),MVC 抛出异常。” 即使我将行更改为 DefaultModelBinder.ResourceClassKey = "asdfasdhfk" 也不例外。
有人有想法么?
编辑:这是一些代码。减去我的 Messages.resx 文件的消息没有被使用,所有这些都在工作。Messages.resx 的代码是自动生成的,所以我不会包含它。
因此,在 ProcessOrder 中输入“a”会生成一条通用消息,而不是我在 Messages.resx 中为 PropertyValueInvalid 输入的信息(以及 InvalidPropertyValue 为良好的衡量标准)。
Application_Start 方法
实体类
控制器动作:
asp.net-mvc - IOC on IValidationDictionary 与温莎城堡
我是温莎城堡的新手,我只是使用最新版本。我已经为我的存储库创建了运行良好的条目,但是我有一个最终依赖项,我将其传递到我的控制器中。
我创建了一个继承自 IValidationDictionary 的 ModelStateWrapper。ModelStateWrapper 在其构造函数中采用 ModelStateDictionary ,因此在我的代码中,我可以将以下内容作为示例传递:
在我的测试中,我可以使用 Moq 执行此操作:
我似乎无法让 Castle 用 ModelStateWrapper 注入 ModelState。我不知道从哪里开始,似乎我不能只是“忽略它”并尝试手动注入,因为 Castle 正在搜索依赖项并向我抛出一个错误,说存在依赖项。
如何配置 Castle Windsor 以使用基于 IValidationDictionary 的 ModelStateWrapper 并将 ModelState 作为构造函数参数?
劳埃德
c# - 带有 GET/POST 方法和 try-catch 块的 ASP.NET MVC ModelState
我在让 MVC 模型状态与网站上的登录过程一起工作时遇到了一些问题。我有一个典型的登录屏幕,其中包含用户名和密码字段。帐户控制器有 2 种方法来处理登录。第一个是名为“LogOn()”的 Get 方法,它只返回登录视图(即用户名/密码),第二个也称为“LogOn(FormCollection values)”,但它具有 [AcceptVerbs(HttpVerbs.Post )] 指定的。
因此,如果用户尝试在没有输入用户名和/或密码的情况下登录,则 post 方法会对此进行检查,并通过 ModelState.AddModelEror() 将错误添加到 ModelState。这是发生的第一件事,在验证之后,如果 ModelState.IsValidated() 为 false,那么我只返回 View()。
现在,这很好用,如果其中一个为空白,则页面将返回并使用 HtmlValidationMessage(keyName) 显示正确的错误消息。问题是,在验证之后,我会进行实际的登录调用以启动提供的用户名/密码的身份验证过程,该用户名/密码包含在 try/catch 块中。如果在这个过程中发生错误,我想将错误添加到 ModelState,并返回 View(),就像我上面做的那样。错误已成功添加到 ModelState 中,并且 View 正在正确地运行代码,但在那之后,不知何故调用了 Get Logon() 方法,然后覆盖所有内容并只显示 View,就好像它是用户第一次访问该页面!
所以整个代码过程类似于下面发布的:
任何有关此过程为何以这种方式工作的帮助或见解将不胜感激,谢谢!