我在 MVC 3 中使用客户端、不显眼的验证。我有一个名为 MinPrice 的字段,仅用 DisplayName 和 Range 属性修饰。但客户端验证失败,提示“需要 MinPrice 字段”。我不知道为什么,而且我绝对没有在任何地方应用必需的属性。
[DisplayName("Asking Price")]
[Range(0, 99999999, ErrorMessage="Invalid number")]
public int MinPrice { get; set; }
是什么原因造成的?
(注意:我可以看到 data-val-required="The Minprice field is required"属性呈现在 html 源代码中,所以与新的不显眼的例程有关的东西就是把它放在那里)。我在其他领域似乎没有这个问题..
最佳答案
仅供引用,这实际上与 Linq to SQL 无关。
隐式 [Required]
属性应用于 MinPrice,因为它是一个 int
,根据定义,它是不可空的(与 int?
可以为空)。
此行为由
实现DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes
默认为真。
您可以通过在 Global.asax 中将其设置为 false 来禁用此行为
关于asp.net-mvc-3 - ASP.Net MVC 3 - 使用 DataAnnotations 的不显眼的客户端验证 - 字段是必需的,但不应该是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5062868/