问题标签 [data-annotations]

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 投票
5 回答
35765 浏览

asp.net - 单元测试 ASP.NET DataAnnotations 验证

我正在使用 DataAnnotations 进行模型验证,即

在我的控制器中,我正在检查 ModelState 的值。对于从我的视图发布的无效模型数据,这正确返回 false。

但是,在执行我的控制器操作的单元测试时,ModelState 总是返回 true:

我需要做任何额外的事情来在我的测试中设置模型验证吗?

谢谢,

0 投票
3 回答
2341 浏览

c# - 模型级验证

如 Brad Wilson 的帖子中所述,如何完成“模型级”验证:

最后,如果您希望验证可以访问多个属性,则将其设为模型级别的验证(以便将整个模型作为模型参数,而不是单个属性值)。

来自http://forums.asp.net/p/1457591/3650720.aspx

我尝试执行以下操作

断点放置在触发器的IsValid覆盖中MyCustomValidation,代码只是继续。工作的构造函数中的断点MyCustomValidation,但之后没有。

这不是model-level validation指的吗?

更新:

dirtygopher 的链接到http://bradwilson.typepad.com/blog/2010/01/input-validation-vs-model-validation-in-aspnet-mvc.html显示模型验证,唯一的问题是放置了验证属性在父类的子属性上。

validation-attributes正如我在上面的示例中演示的那样,我正在寻找一种直接放置到班级的方法。

0 投票
1 回答
526 浏览

jquery - ASP.NET MVC 中的选择性客户端验证

如何
使用 MVC 2 内置验证系统实现选择性客户端验证?
假设我的表单标题“你有孩子吗?”中有一个复选框。
如果选中下面的文本框,则它应该是必需
的(标题为 Number of children 的文本框)。

0 投票
3 回答
10338 浏览

.net - 如何替换标准 DataAnnotations 错误消息

我正在使用 System.ComponontModel.DataAnnotations 来验证我的模型对象。如何在不为每个属性提供 ErrorMessage 属性或对它们进行子类化的情况下替换标准属性(Required 和 StringLength)产生的消息?

0 投票
6 回答
6119 浏览

primary-key - 为什么要使用主键?

除了标识表中的唯一列之外,还使用了哪些主键?这不能通过简单地在列上使用自动增量约束来完成吗?我知道 PK 和 FK 用于关联不同的表,但这不能通过仅使用连接来完成吗?

基本上,当使用主键加入时,数据库在做什么来提高性能?

0 投票
1 回答
1573 浏览

asp.net-mvc - 从 cookie 问题中提取的自定义模型绑定器?

我正在尝试执行以下操作。

使用默认模型绑定器从查询字符串值绑定对象。
如果失败,我会尝试从 cookie 值绑定对象。

但是我在这个对象上使用数据注释,我遇到了以下问题。

  1. 如果没有查询字符串参数,默认模型绑定器甚至不会在必填字段上注册任何验证错误。如果属性本身不在查询字符串集合中,它显然甚至不会触发这些验证器。我怎样才能改变这种行为?如果它们不在查询字符串中,我希望必填字段是错误的。
  2. 如果我确实有模型验证错误,我想从 cookie 中加载模型,然后重新验证对象。我不确定如何让模型绑定器验证我自己填充的对象。

这是我到目前为止所拥有的。

任何有关如何正确执行此操作的帮助将不胜感激。

0 投票
3 回答
2236 浏览

c# - asp.NET MVC 2 数据注释更新模型验证

我正在尝试使用 DataAnnotations 在 asp.NET MVC 2 RC2 中使用 TryUpdateModel 向我的模型添加验证

这会更新模型,但永远不会调用验证。我也尝试使用 TryUpdateModel (这是用户的直接类型),不使用表单值提供程序,直接使用 ProvisioningObject (具有验证元数据),但无济于事。

谷歌搜索示例只为我提供了通过参数绑定来使用 DataAnnotations 的方法

我不喜欢更新场景。

任何提示和/或解决方案?

编辑 我的对象是从 WCF 服务自动生成的对象。

我制作了部分以便能够添加 DataAnnotations。我三次调用 TryUpdateModel 是因为它显然不支持继承,我认为这也是我对 DataAnnotations 的问题。我为 ProvisioningObject 指定了验证属性,并且绑定不会寻找类似的继承内容。

如果我在 UserMetadata 中添加 DisplayName 的元数据,它会按预期工作,但这似乎非常多余。这意味着我还必须复制/粘贴所有继承的接口,以便 TryUpdateModel 表现得适当。

我想我正在寻找一种不需要我将验证属性复制并粘贴到继承类的方法。

0 投票
12 回答
46995 浏览

asp.net-mvc - 如何使用 DataAnnotations 处理 ASP.NET MVC 2 中的布尔值/复选框?

我有一个这样的视图模型:

视图标记代码:

结果:

不执行验证。到目前为止没关系,因为 bool 是一种值类型,并且永远不会为空。但是,即使我使 AgreesWithTerms 可以为空,它也不会起作用,因为编译器会喊

“模板只能与字段访问、属性访问、一维数组索引或单参数自定义索引器表达式一起使用。”

那么,处理这个问题的正确方法是什么?

0 投票
2 回答
1497 浏览

asp.net-mvc - 英国日期时间字段的数据注释范围

我想使用数据注释来验证 DateTime 字段,但我遇到了问题。根据 MSDN 上的文档(http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.rangeattribute.aspx),以下应该可以完成工作

但是,这会将我输入的任何日期标记为无效!

起初我以为它没有选择英国日期(当我尝试 26/2/2004 时),但我什至无法让它使用诸如 2/2/2004 之类的日期。

我在 MVC2 中使用数据注释,并使用 MicrosoftAjax 框架进行客户端验证。

有什么建议么?

谢谢

0 投票
3 回答
623 浏览

asp.net-mvc - 是否应该始终在模型级别强制执行验证规则?

使用新的 ASP.NET MVC 2 验证功能,我们可以使用DataAnnotations描述有效值标准的属性来装饰域模型对象的属性。DefaultModelBinder知道这一点并在ModelState.IsValid调用控制器操作之前相应地填充。由于验证规则是在域模型中定义的,因此这被视为模型级别的验证。斯科特·格思里写道

在我们的 Person 对象中实现规则的好处是,这将确保验证将通过我们应用程序中使用 Person 对象的任何场景 [...]

严格来说,我认为这些规则并没有真正执行,因为所有操作方法都需要检查ModelState.IsValid属性并根据其值采取不同的行动。此外,虽然规则是在模型中定义的,但它们在表示层中应用,因为这是所有模型绑定器所在的地方。但我想这只是我对单词的选择很挑剔(或者我完全错了)。

但是,如何在域模型级别执行验证规则呢?Steven Sanderson 在一篇关于 xVal 验证框架的文章中使用了这种方法,他写道:

现在,模型层通过拒绝放置不符合所有验证和业务规则的预订来强制执行其自身的有效性。

在他的示例中,“预订管理器”(位于模型中)在使用代码尝试进行无效预订时抛出一个特殊的业务规则异常。因此,消费代码不可能进行无效预订,无论它是否事先检查了预订的有效性(通过ModelState.IsValid或其他一些自定义构造)。

所以我的问题是:

假设在模型级别定义了验证规则,它们是否也应该在模型中强制执行?

(请注意,我对领域驱动设计的概念真的很陌生,所以如果我没有使用正确的术语,请多多包涵。)