问题标签 [model-validation]

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.

0 投票
1 回答
387 浏览

regex - 在自定义 ModelValidatorProvider 中使用 RegularExpressionAttribute

我有一个ModelValidatorProvider在 ASP.NET MVC 应用程序中使用的自定义实现。但我目前在任何产生RegularExpressionAttributeAdapter. 错误是Either ErrorMessageString or ErrorMessageResourceName must be set, but not both.现在我的代码没有设置资源名称但确实设置了一条消息。

我尝试将两者都设置ErrorMessageResourceName为 null 并将其设置ErrorMessageResourceType为 null,但它没有帮助。如果我没有设置ErrorMessage异常,那么我就会失去用户对验证的反馈。

现在,我应该注意到这曾经可以工作,但我最近升级了应用程序以使用 MVC4 而不是 MVC3,我很好奇这是 MVC4 独有的还是其他东西?

0 投票
1 回答
102 浏览

asp.net - MVC3:非字符串的 EditorForModel()

我有一个模型,我想在表单中使用EditorForModel(). 对于所有非字符串数据类型(如 bool、DateTime 等),即使我没有设置[Required}数据注释,创建的表单也会使字段成为必填字段。如何设置Object.cshtml文件以识别这不是必填字段?

0 投票
1 回答
2676 浏览

asp.net-mvc-3 - 级联下拉列表在发布后丢失选择的项目

我有一个 MVC3 razor 项目,我正在尝试使用多个可重用元素来构建它。我有很多模型类,如下所示

我在此示例中省略了其他字段

MyAccountsDropDown.cshtml 看起来像这样:

我的控制器方法如下所示:

所以当视图打开时(作为一个 jQuery 对话框),我已经设置好了表单。如果我选择一个 orgName,它会从数据库中提取 accountName(级联)。现在,由于我正在使用模型验证,当我没有填写所有必填字段并按提交时,它会向我显示验证消息。它还显示了我在提交之前已经输入的字段的预填充值。删除的是级联下拉值。因此它会继续显示选定的 orgName,但 accountName 下拉列表会丢失数据库中先前填充的值。

如何在单击提交之前维护已拉取的 SelectItems

0 投票
1 回答
4049 浏览

c# - 使用自定义 DataAnnotationsModelValidatorProvider 进行服务器端验证

我已经设置了一个自定义提供程序,以允许从数据存储而不是静态代码中设置验证属性。在我的 .NET MVC 4 项目中非常适合客户端验证,但我无法让服务器端验证正常工作。

CustomModelValidatorProvider .cs:

在我的 Global.asax.cs 我有:

在 Web API 方法中,我有:

在这里,valid 总是正确的。即使 Jquery 客户端验证显示错误。在服务器端,我的自定义提供程序未用于应用数据注释。当我在 GetValidators() 中设置断点时,它会在创建视图并正确显示客户端验证器时调用,但在模型绑定到控制器时不会再次调用。

我错过了一步吗?任何帮助是极大的赞赏!

更新

自定义验证器在对象发布到 Controller 时正常工作,但在发布到 ApiController 时不会被触发。

0 投票
1 回答
338 浏览

asp.net-mvc-3 - 仅适用于新对象 ASP.NET MVC 所需的 ModelValidation

我从昨天开始就有这个问题。在我的用户模型中,我有一个名为“ ConfirmPassword ”的[NotMapped]。我没有将它保存在数据库中,但我总是在我的 Create 表单中使用它来验证新用户的数据输入。

从那以后,没关系。问题出在我的 [HttpPost] 编辑操作上。我应该能够在没有输入的情况下编辑一些用户的数据并确认密码。如果我想更改密码,我同时使用 Password 和 ConfirmPassword 作为确认旧密码并通知新密码的一种方式。但是,如果我不这样做,我会将它们留空。

我已经使用下面的代码来传递 ModelState.IsValid() 条件并且它起作用了:

但是,就在 db.SaveChanges() 之前,考虑到 User 用户视图模型,它的两个属性都是空的,我得到了:

问题是:当我想更新对象时,如何跳过所需的模型验证?

我已经阅读了自定义 ModelValidations 以及扩展ValidationAttributeDataAnnotationsModelValidator的类,但我做得不对。

任何的想法?我如何创建一个自定义模型验证来检查 UserId 属性是否为空。这是检查我是否处于创建或编辑操作的好方法。

谢谢,保罗

0 投票
3 回答
468 浏览

asp.net-mvc-3 - MVC3 中的默认属性值

我在 MVC3 中有 2 个包含 POCO 实体的类

我想JoinDate用 Project设置 TeamMember 的默认值StartDate。谁能把我拉出来

0 投票
3 回答
14907 浏览

asp.net-mvc - MVC 日期时间验证失败

我发现了很多类似的问题,但不是一个很好的干净的解决方案。我看到很多自定义代码可以让它工作,但这是为什么呢?这不应该从一开始就起作用吗?

我认为奇怪的是,它在 IE9 中有效,但在 Firefox 和 Chrome 中却失败了。每次在 Firefox 或 Chrome 中尝试时,我都会收到消息“生日字段必须是日期”。

当我在一个新的 MVC 4 RTM 项目中尝试下面的代码时,我无法让它工作。我在所有浏览器中都看到 DateTime.Now 默认为 dd-MM-yyyy(荷兰),但我无法在 Firefox 和 Chrome 中提交它。

全球化标签未在 web.config 中设置,因此它必须使用默认值。我来自荷兰,所以我猜它应该得到客户文化。

标记

0 投票
1 回答
2302 浏览

asp.net-mvc-3 - 重复的自定义验证不起作用

我想为重复的用户名和电子邮件创建自定义验证。型号是这样的:

所有验证都有效,但我的自定义验证 - ValidateDuplicateUsernameValidateDuplicateEmail不起作用。这里有什么问题?

0 投票
5 回答
26476 浏览

asp.net-mvc-3 - 验证错误消息未显示 MVC4

我正在使用 MVC4。

验证失败,但未显示验证错误消息。

这是我的模型。

控制器。

视图是

如果有更好的验证方法,也请建议我。

0 投票
3 回答
1909 浏览

.net - MVC3 客户端对集合进行验证,至少一个元素具有值

我的视图模型

我的模特

在我看来,我正在ViewModel.Collection使用编辑器模板进行渲染

现在,我想要的是确保使用客户端验证至少选中一个复选框。

我可以通过在属性上设置自定义验证属性Item.Selected并通过注册新适配器来实现这一点$.validator.unobtrusive.adapters.add()

但我觉得属性应该在ViewModel.Collection属性上,因为在服务器端我已经在验证集合的项目之一是否Selected = True使用了这个自定义验证:

它使用反射SelectOnePropertyAttribute来查找要检查的属性:

这就是客户端验证