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

C# MVC HTML帮助程序:获取所有验证属性,c#,asp.net-mvc,validation,html-helper,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 cla

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

<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 />
开始

因此,现在在我的自定义助手中,我应该确定验证类型
数据值日期,例如
和验证消息。
ModelMetaData
没有该属性。这怎么可能呢

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

正如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()));
     }
}
公共静态MvcHtmlString MyFastHelper(此HtmlHelper,表达式选择器,布尔值验证=false){
var Label=LabelExtensions.LabelFor(助手、选择器);
var Val=ValidationExtensions.ValidationMessageFor(助手,选择器);
var Editor=EditorExtensions.EditorFor(helper,selector,new{htmlAttributes=new{@class=“form control”});
如果(验证)
{
返回新的MvcHtmlString(String.Format(“{0}\r\n{1}\r\n{2}\r\n
”,Label.ToHtmlString(),Val.ToHtmlString(),Editor.ToHtmlString()); } 其他的 { 返回新的MvcHtmlString(String.Format(“{0}\r\n{1}\r\n
”,Label.ToHtmlString(),Editor.ToHtmlString()); } }

或者,如果您真的对了解这些内置帮助程序的工作方式感兴趣,您可以使用
dotPeek
等软件浏览.NET。您可以获得它

为什么在自定义助手中需要它?你到底想做什么?@StephenMuecke:试图制作Bootsrap帮助程序以节省时间,这样我就可以将标签、字段和验证消息包装在一个帮助程序中。也许可以编辑你的问题,说明-你不需要“验证属性的值”-您在自定义帮助程序中使用现有的帮助程序。@StephenMuecke:错误消息等值正是我需要的。我可以从元数据中确定所需的ISR,但不能从值中确定@StephenMuecke:我想我也不能让它们脱离模型状态,因为我需要客户端验证。