说我有这样的模型
public class User
{
[Required]
[StringLength(14, ErrorMessage = "Can only be 14 characters long")]
public string UserName;
}
我想创建一个这样的 Html 助手:
@Html.ValidatableEditorFor(m => m.UserName)
以便它吐出一个具有正确格式的文本字段,以便 jQuery Vaidation 插件能够验证,如下所示:
<input type="text" class="required" maxlength="14" />
根据我的研究,似乎没有办法遍历 MetaDataModel 中的所有数据注释,以便我可以检查哪些适用于 jQuery Validation。
我如何设想它在伪代码中工作:
var tag = new TagBuilder("input");
tag.mergeAttribute("type", "text");
foreach(var attribute in metadata.attributes)
{
CheckForValidatableAttribute(attribute, tag);
}
...
private void CheckForValidatableAttribute(DataAnnotation attribute, TagBuilder tag)
{
switch(attribute.type)
{
case Required:
tag.addClass("required");
break;
case StringLength
tag.mergeAttribute("maxlength", attribute.value)
break;
}
}
我怎样才能实现这样的助手?我希望它可以处理数据注释,这样我就不必复制验证文字。
例如,当前的 Html 助手(如 TextEditorFor)确实将可验证的属性附加到其输出字段。它是如何做到这一点的,我该如何进行自己的实现?
干杯