gpt4 book ai didi

asp.net-mvc-3 - 如何在客户端将自定义 ValidationAttribute 呈现为 'data-val-xx' 属性?

转载 作者:行者123 更新时间:2023-12-01 19:34:10 25 4
gpt4 key购买 nike

给定一个如下所示的 ViewModel:

public class Login {
[Required]
public string Username { get; set; }

[Required, CustomValidator]
public string Password { get; set; }
}

像这样的 View (此处为 Razor 语法):

@Html.TextBoxFor(f => f.Password)

我得到以下标记:

<input type="text"
value=""
data-val-required="This field is required." />

但是我希望它还包含我的自定义验证器的“data-”属性。

我想要这样的东西:

<input type="text" 
value=""
data-val-required="This field is required."
data-val-customvalidator="XYZ" />

如何使用 ASP.NET MVC 3.0 实现此目的?

例如我需要在自定义验证器上添加一些特殊属性吗?或者在某个地方注册它?

最佳答案

嗯,MSDN 救了我(就像它经常做的那样)。

http://msdn.microsoft.com/en-us/library/ff398048.aspx

所以首先我必须为我的验证属性创建一个适配器:

public class CustomAttributeAdapter : DataAnnotationsModelValidator<EmailAttribute>
{
public CustomAttributeAdapter(
ModelMetadata metadata,
ControllerContext context,
CustomAttribute attribute) :
base(metadata, context, attribute)
{
}

public override IEnumerable<ModelClientValidationRule> GetClientValidationRules()
{
ModelClientValidationRule rule = new ModelClientValidationRule()
{
ErrorMessage = ErrorMessage,
ValidationType = "custom"
};
return new ModelClientValidationRule[] { rule };
}
}

(“ValidationType”设置必须为小写才能正常工作,因为这是将用作 HTML5 属性的后修复 - “data-val-custom”。 )

然后我需要做的就是在 Application_Start 上注册它。

DataAnnotationsModelValidatorProvider.RegisterAdapter(
typeof(EmailAttribute),
typeof(EmailAttributeAdapter));

期待 HTML5 验证带来很多乐趣。 :)

关于asp.net-mvc-3 - 如何在客户端将自定义 ValidationAttribute 呈现为 'data-val-xx' 属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4120792/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com