Пользовательский шаблон редактора Asp.net MVC 3 не используется

У меня есть веб-приложение MVC 3, в котором используется механизм просмотра Razor. Я хотел бы расширить шаблоны редактора по умолчанию, поэтому я хотел бы добавить дополнительные атрибуты HTML5 к элементам input , например autofocus .

Я использую AdditionalMetadataAttribute , чтобы указать определенные свойства моей сущности для автофокусировки:

public class MyEntity
{
    public int Id { get; set; }

    [Required]
    [AdditionalMetadata("autofocus", true)]
    [DataType(DataType.Text)]
    public string Name { get; set; }

    ...
}

Поскольку в формировании представления используется метод EditorFor , я решил поиграть и переопределить значение по умолчанию Шаблон String.cshtml , чтобы он также добавлял любые дополнительные метаданные в качестве атрибутов. Подыгрывать означает, что я не хочу использовать TextBoxFor , где я могу управлять атрибутами ввода.

Это мои небольшие изменения String.cshtml , которые добавляют все дополнительные атрибуты метаданных в качестве входных атрибутов HTML:

@{
    // System.Diagnostics.Debugger.Break();
    this.ViewData.ModelMetadata.AdditionalValues.Add("class", "text-box single-line");
}
@Html.TextBox(string.Empty, ViewContext.ViewData.TemplateInfo.FormattedModelValue, this.ViewData.ModelMetadata.AdditionalValues)

Этот шаблон должен отображать тот же input type = text с тем же CSS-классы, но также с дополнительными атрибутами, если они есть.

Затем я помещаю этот файл в папку ~ / Views / Shared / EditorTemplates / , но, похоже, этот шаблон никогда не выбирается, потому что все, что я получаю, - это просто текстовое поле ввода по умолчанию.

Что я делаю не так?

10
задан Robert Koritnik 4 February 2012 в 20:37
поделиться