问题标签 [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 投票
3 回答
6210 浏览

asp.net-mvc - 为实体框架自动生成元数据类

我正在考虑使用 xVal 来验证 MVC 应用程序中的实体框架类。这涉及编写元数据类,如 Graham O'Neale ( http://goneale.com/2009/03/04/using-metadatatype-attribute-with-aspnet-mvc-xval-validation-framework ) 中详细解释的那样。

我想知道是否有一种方法可以使用 SQL 数据库中的元数据自动生成此类元数据类(例如:非空字段将具有 [Required] 类属性。

0 投票
1 回答
244 浏览

ruby-on-rails - Rails 和模型验证

我想在下表中放置一些模型级别的验证:

这是否意味着,我的模型(到目前为止)看起来像:

拥有

或者

?

0 投票
1 回答
923 浏览

asp.net-mvc-2 - 在 Asp.net MVC2 RTM 中使用可枚举属性进行模型验证

我正在使用DataAnnotations属性来验证我的模型对象。我的模型类看起来与此类似:

我的控制器动作如下所示:

向用户呈现的视图具有以下形式:

  • 一个带有虚拟名称的文本框,用户可以在其中输入用户名。对于他们输入的每个用户,有一个客户端脚本与 ajax 相结合,<input type="hidden" name="Editors[0].Id" value="userId" />为每个输入的用户创建一个(因此枚举索引并不总是 0,如此处所写),因此默认模型绑定器能够毫无问题地使用和绑定表单。
  • 用户输入标题的文本框

由于我使用的是Asp.net MVC 2 RTM,它进行模型验证而不是输入验证,所以我不知道如何避免验证错误。并且由于用户提供User.Id,整个User对象实例正在被验证。这不会打扰我,只要我知道如何排除其他属性的验证。

问题是我必须BindAttribute在我的控制器动作上使用。我必须提供属性的白名单或黑名单。提供白名单始终是一种更好的做法。这也是更多的未来证明。

问题

我的表单工作正常,但我收到有关用户FullNameEmail属性的验证错误,因为它们没有提供。我也不应该将它们提供给客户端(当用户输入用户数据时通过 ajax),因为电子邮件是个人联系数据,不会在用户之间共享。

如果只有一个用户参考,MyModel我会写

但我列举了它们。如何提供Bind与我的模型一起使用的白名单?

一种可能的解决方案

User为了输入 MyModel 对象,我可以创建一个单独的视图模型。我会放置实际的验证属性并省略我不需要的属性。

0 投票
2 回答
1784 浏览

asp.net-mvc - 单元测试(xUnit)具有自定义输入模型的 ASP.NET Mvc 控制器?

我很难找到关于我期望是一个非常简单的场景的信息。我正在尝试对我的 ASP.NET Mvc 2 控制器上的操作进行单元测试,该控制器使用带有 DataAnnotions 的自定义输入模型。如标题所述,我的测试框架是 xUnit。

这是我的自定义输入模型

这是我的控制器(取出一些逻辑来简化这个例子):

这是我的xUnit 事实(也简化了):

当我运行测试时,在尝试检索控制器结果(Act 部分)时,我的测试事实出现以下错误:

提前感谢您提供的任何帮助!

0 投票
1 回答
872 浏览

c# - DataAnnotations 的 ValidateModel 问题

我有一个具有以下属性的 SearchViewModel:

如您所见,我希望“name”是此时 SortField 的唯一有效值,而“asc”或“desc”是 SortDirection 的唯一有效值。

但是,当值不同时,ValidateModel 不会捕获任何错误,并且 ModelState.IsValid 返回 true。基本上我可以提供任何价值,它会一直通过。

简略的控制器方法:

我究竟做错了什么?

编辑:我不确定这是否重要,但我使用的是自定义 ModelBinder。

0 投票
1 回答
177 浏览

c# - 检测特定属性在模型上是否有效

从 System.ComponentModel.DataAnnotations.ValidationAttribute 创建了我自己的验证属性后,我希望能够从我的控制器中检测到该特定属性在模型上是否有效。

我的设置:

现在,如何从控制器检测 CustomValidationAttribute 的验证是否成功?

我一直在查看 ModelState 中 ModelError 的 Exception 属性,但我无法从我的 CustomValidationAttribute 中添加自定义异常。

现在我已经求助于检查 ModelState 中的特定错误消息:

并将我的 CustomValidationAttribute 更改为:

我不喜欢依赖字符串匹配,这种方式 ErrorMessage 属性有点被滥用。

我有哪些选择?

0 投票
2 回答
1462 浏览

asp.net-mvc - 将字段标记为必填

如果我有一个 dbml 文件,其中包含一个 Customer 类,其中包含一个 CompanyName 属性;

现在,鉴于以上内容在 dbml 中并因此生成,我显然应该避免像瘟疫一样编辑它。

所以我创建了另一个这样的类;

这样做的原因是因为我想根据需要装饰我的领域。

但是,这不起作用,因为我收到编译错误“......已经包含'CustomerID'的定义”。

有谁知道解决这个问题的方法,或者有更好的方法来标记字段为必填项或验证模型吗?

0 投票
1 回答
564 浏览

asp.net-mvc - 子对象上的 ASP.NET MVC 2 模型验证(DataAnnotations)

ASP.NET MVC 2 模型验证是否包含子对象?

我有一个来自此类的实例“过滤器”:

在我的主要对象中:

但是,当我执行 TryValidateModel(mainObject) 时,即使 MainObject.Filter.Text 中的“文本”超过 5 个字符,验证仍然有效。

这是故意的,还是我做错了什么?

0 投票
3 回答
300 浏览

asp.net - ASP.NET MVC 2.0 自定义客户端验证

我正在尝试制作一个验证器,以确保至少选择了 2 个项目。验证器在服务器端正常工作,但客户端代码永远不会被执行。

这是代码:

这是验证器代码:

我什至在 global.asax 文件中注册了验证适配器:

我认为验证器仅适用于具有 value 属性的元素,如文本框等。

更新 1:

EnableClientValidation 被正确调用,并且所有需要的 JS 文件都包含在项目中。似乎我需要将 onblur 附加到上下文中。我会尝试并发布结果。

0 投票
4 回答
15252 浏览

asp.net-mvc - 如何在 IEnumerable 中使用 Html.CheckBox(列表)有验证

我正在处理用户需要填写一些信息并最终通过复选框选择 1 个或多个客户的页面。

客户列表是IEnumerable<Customer>我传递给我的模型的。我将如何使用创建复选框列表.CheckBoxFor()

最后,我希望能够验证是否至少选择了 1 个复选框。

Request 是保存用户输入信息的对象。

谁能指出我正确的方向?还是我对这一切都错了?