MVC HTML 帮助程序:获取所有验证属性

本文关键字:验证 属性 获取 HTML 帮助程序 MVC | 更新日期: 2023-09-27 17:56:38

在创建自定义帮助程序时,我们如何获取验证属性的值(客户端验证)? 例如,内置帮助程序执行以下操作:

<label class="control-label " for="Starts">Starts</label>
<span class="field-validation-valid text-danger" data-valmsg-for="Starts" data-valmsg-replace="true"></span>
<input class="form-control text-box single-line" data-val="true" data-val-date="The field Starts must be a date." data-val-required="The Starts field is required." id="Starts" name="Starts" type="date" value="" />
<br />

所以现在在我的自定义帮助程序中,我应该确定验证类型data-val-date for example和验证消息。ModelMetaData没有任何属性。怎么能做到这一点?

MVC HTML 帮助程序:获取所有验证属性

错误消息等值正是我所需要的。

正如 Stephan 在他的评论中所说,您不必在获取此类数据注释属性的值后去,因为它只是重复工作。如果您真的想将表单封装在单个帮助程序中,那么为什么不重用漂亮的内置帮助程序呢?

给你看一个例子来说明我的意思:

public static MvcHtmlString MyFastHelper<T,R>(this HtmlHelper<T> helper, Expression<Func<T,R>> selector, Boolean validate = false){
     var Label = LabelExtensions.LabelFor(helper, selector);
     var Val = ValidationExtensions.ValidationMessageFor(helper, selector);
     var Editor = EditorExtensions.EditorFor(helper, selector, new { htmlAttributes = new { @class = "form-control"} });
     if (validate)
     {
         return new MvcHtmlString(String.Format("{0}'r'n{1}'r'n{2}'r'n</br>", Label.ToHtmlString(), Val.ToHtmlString(), Editor.ToHtmlString()));
     }
     else
     {
         return new MvcHtmlString(String.Format("{0}'r'n{1}'r'n</br>", Label.ToHtmlString(), Editor.ToHtmlString()));
     }
}

或者,如果您真的有兴趣了解这些内置帮助程序的工作原理,则可以使用dotPeek等软件潜入 .NET。你可以在这里得到它