Скажем, у меня есть такая модель
public class User
{
[Required]
[StringLength(14, ErrorMessage = "Can only be 14 characters long")]
public string UserName;
}
Я хочу создать помощник Html, подобный этому :
@Html.ValidatableEditorFor(m => m.UserName)
, чтобы он выдавал текстовое поле с правильным форматом для jQuery Подключаемый модуль валидации, чтобы иметь возможность проверки, как это:
<input type="text" class="required" maxlength="14" />
Из моего исследования кажется, что нет способа выполнить итерацию по всем аннотациям данных в MetaDataModel, чтобы я мог проверить, какие из них применимы к проверке jQuery.
Как я себе представляю, как это работает в псевдокоде:
var tag = new TagBuilder("input");
tag.mergeAttribute("type", "text");
foreach(var attribute in metadata.attributes)
{
CheckForValidatableAttribute(attribute, tag);
}
...
private void CheckForValidatableAttribute(DataAnnotation attribute, TagBuilder tag)
{
switch(attribute.type)
{
case Required:
tag.addClass("required");
break;
case StringLength
tag.mergeAttribute("maxlength", attribute.value)
break;
}
}
Как мне добиться такого помощника? Я хочу, чтобы он работал с аннотациями данных, чтобы мне не приходилось дублировать литералы проверки.
Например, текущие помощники HTML, такие как TextEditorFor, добавляют проверяемые атрибуты к своим полям вывода.Как это сделать, и как я могу сделать свою собственную реализацию?
Ура