【发布时间】:2014-11-24 11:48:06
【问题描述】:
我正在做一个更大的项目,我们有很多视图,几乎所有视图都有一个或更多的 SelectList,其值为 GUID。 viewmodel 工作正常,服务器端验证也很好,问题是 HTML select 元素没有获取任何 data-val 属性,我们使用的是 Html.DropDownListFor。当值很短、字符串等但不是 GUID 时,它可以正常工作。
有没有办法在不向视图模型中的所有 GUID 属性添加 ValidationAttribute 的情况下获取 data-val 属性?因为他们有很多战利品。
最后对我有用的是什么:
Stephen Muecke 的回答让我走上了正确的道路:我们正在使用我们自己的 RequiredAttribute:
public class LocalizedRequiredAttribute : RequiredAttribute
{
public LocalizedRequiredAttribute()
{
ErrorMessageResourceName = "Required";
ErrorMessageResourceType = typeof (Resources.ErrorMessages);
}
}
但这并没有像基本的[Required] 那样添加任何客户端验证属性,但很容易修复。只需将此代码添加到您的Application_Start():
DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof (LocalizedRequiredAttribute),
typeof (RequiredAttributeAdapter));
现在你会得到data-val=true data-val-required="message"。
在此处找到解决方案:https://stackoverflow.com/a/12573540/1225758
【问题讨论】:
-
您期望什么 data-val 属性?
-
啊,好点子,应该在问题中包含这个:至少
data-val="true",但由于数字也得到data-val-number="message here",我猜想data-val-guid="message here"之类的。
标签: c# asp.net-mvc-4 validation