Пользовательский помощник HTML, который может просматривать аннотации данных

Скажем, у меня есть такая модель

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, добавляют проверяемые атрибуты к своим полям вывода.Как это сделать, и как я могу сделать свою собственную реализацию?

Ура

11
задан Chris 30 April 2012 в 10:13
поделиться