由于HTML5支持现在变得如此广泛,我想到了禁用基于jQuery.validate的默认MVC5客户端验证系统,并创建了一组自定义HtmlHelper,只需将required="required"
属性添加到{使用<input>
属性修饰ViewModel属性时的{1}}字段。
目前,我的代码如下所示:
[Required]
它运行良好,唯一的问题是public static MvcHtmlString Html5TextBoxFor<TModel, TProperty>(this HtmlHelper<TModel> helper, Expression<Func<TModel, TProperty>> expression)
{
var required = typeof(TProperty).GetProperties().Any(prop => Attribute.IsDefined(prop, typeof(RequiredAttribute)));
var requiredAttribute = required ? new {required = "required"} : null;
var html = new StringBuilder();
helper.ViewContext.ClientValidationEnabled = false;
html.Append(helper.TextBoxFor(expression, requiredAttribute));
helper.ViewContext.ClientValidationEnabled = true;
return new MvcHtmlString(html.ToString());
}
变量始终为false,即使ViewModel属性设置为required
也是如此。
我做错了什么?