Скажем, у меня есть такая модель
public class User
{
[Required]
[StringLength(14, ErrorMessage = "Can only be 14 characters long")]
public string UserName;
}
Я хочу создать Html-помощник следующим образом:
@Html.ValidatableEditorFor(m => m.UserName)
чтобы он выдавал текстовое поле с правильным форматом для плагина jQuery Vaidation, чтобы его можно было проверить, например:
<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, добавляют в свои выходные поля атрибуты validatable. Как это сделать и как я могу выполнить свою собственную реализацию?
Приветствия