2015-06-15 3 views
0

Что касается создания пользовательских помощников, как мы можем получить значение для атрибутов проверки (проверка на стороне клиента)? например, встроенный в помощниках сделать что-то вроде этого:MVC HTML Helpers: получить все атрибуты проверки

<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 нету для этого свойства. Как это можно сделать?

+0

Зачем вам это нужно в вашем обычном помощнике? Что вы на самом деле пытаетесь сделать? –

+0

@StephenMuecke: Попытка сделать помощников Bootsrap для экономии времени, чтобы я мог обернуть ярлык, поле и сообщение проверки в одном помощнике. – Arrrr

+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())); 
    } 
} 

Или, если вы действительно интересно узнать, как эти встроенные помощники работают, вы можете SNEEK точно в .NET с использованием программного обеспечения таких dotPeek , Вы можете получить его Here

Смежные вопросы