C# 通过验证属性添加自定义html属性

C# 通过验证属性添加自定义html属性,c#,asp.net-mvc-5,validationattribute,C#,Asp.net Mvc 5,Validationattribute,在mvc5中,无论何时使用[MaxLength(10)]属性,它都会生成以下html属性: `data-val-maxlength="The field Email must be a string or array type with a maximum length of '10'." 这很好,也很有用,但我想做的是防止用户在达到最大长度后能够键入。要做到这一点,我现在可以使用html属性maxlength,我想弄清楚的是,如何在html字段中插入一个自定义属性,而不使用前缀data va

在mvc5中,无论何时使用
[MaxLength(10)]
属性,它都会生成以下html属性:

`data-val-maxlength="The field Email must be a string or array type with a maximum length of '10'."
这很好,也很有用,但我想做的是防止用户在达到最大长度后能够键入。要做到这一点,我现在可以使用html属性
maxlength
,我想弄清楚的是,如何在html字段中插入一个自定义属性,而不使用前缀
data val-

我尝试通过
iclientvalidable
执行此操作,但这会生成数据val前缀。这可能吗?

1。MVC5剃须刀 使用MVC5 Razor HTML帮助程序设置属性

@Html.TextBoxFor(m => m.Name, new {maxlength = "10"})
2.客户端脚本 您可以使用一些Javascript代码(本例使用jQuery)将值从生成的属性移动到html属性


这不是我要问的,我想从
ValidationAttribute
,而不是从视图来做。我认为这是不可能的。你可能想调查一下。它允许您根据模型中的属性插入自定义HTML属性。您可以找到一些示例用法。但是请注意,它可能已经过时。您不能通过
iclientvalidable
来执行此操作(iclientvalidable的全部目的是添加
data val-*
属性,这些属性由
jquery.validate.unobtrusive.js
用于向jquery验证程序添加规则。
$("input[data-val-maxlength]").each(function (index, element) {
   var length = parseInt($(this).data("val-maxlength"));
   $(this).prop("maxlength", length);
});