MVC HTML Helpers:获取所有验证属性

时间:2015-06-15 22:56:04

标签: c# asp.net-mvc validation html-helper

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

<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没有任何属性。怎么可以这样做?

1 个答案:

答案 0 :(得分:2)

  

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

正如斯蒂芬在评论中所说的那样,你不必去获取这些数据注释属性的值,因为它只是重复工作而已。如果你真的想把你的表单封装在一个帮助器中,那么为什么不重新使用漂亮的内置助手呢?

为您举例说明我的意思:

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。你可以得到它Here