2013-04-22 3 views
1

Я хотел бы создать пользовательские шаблоны отображения для типов данных EmailAddress и PhoneNumber.Пользовательские шаблоны отображения для DataType.EmailAddress и DataType.PhoneNumber

DisplayTemplates разрешаются с использованием типа модели. Однако DataType не может быть разрешен здесь. Я могу установить тип модели в строку для создания настраиваемого шаблона отображения для любой строки, однако то, что передается, является строкой, а не свойством объекта.

ответ

3

Однако то, что передается, является строкой, а не свойством объекта.

Да, но у вас есть доступ к метаданным:

ViewData.ModelMetadata.DataTypeName 

Например, вы могли бы иметь следующий шаблон строки:

@using System.ComponentModel.DataAnnotations 

@if (ViewData.ModelMetadata.DataTypeName == DataType.PhoneNumber.ToString()) 
{ 
    <div>This is a phone number template</div> 
} 
else 
{ 
    @Html.TextBox(
     "", 
     ViewData.TemplateInfo.FormattedModelValue, 
     new { @class = "text-box single-line" } 
    ) 
} 
+0

Спасибо, хорошо работает! Ваш пример для EditorTemplate, хотя ;-) – Wouter

+0

О да, я не обращал внимания :-) –

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