Как отформатировать строковое свойство в классе модели MVC для использования в DisplayFor

Хорошо, я искал решение этой простой задачи весь день.

У меня есть класс модели MVC, который имеет свойство BIC и свойство NationalNumber. Беспокойство - строковые значения. Я хочу использовать помощник DisplayFor для отображения свойства в представлении, НО, с применением форматирования.

для полноты: форматирование для NationalNumber '00.00.00-000.00 ', форматирование для BIC - AAAA BB CC

Я пытался аннотировать свои свойства с помощью атрибута DisplayFormat, но, похоже, он работает только с DateTimes, числовыми значениями и т. Д.,..

[DisplayFormat(DataFormatString = "{0:##.##.##-###.##}")]

Затем я посмотрел на создание пользовательского атрибута DisplayFormat, но он также работает с шаблонами, которые применяются к DateTimes, числовым значениям и т. Д. Вам все еще нужно включить значение DataFormatString в конструкторе вашего пользовательского атрибута. Но фильтр, похоже, не работает со строками!

На данный момент я сделал разметку clientSide(с плагином маски), но это не совсем то, что я хочу!

Подводя итог: я хочу использовать @Html.DisplayFor(x=>x.BicNumber) и сделать это с пользовательским форматированием, предпочтительно аннотированным на моей модели представления, с BicNumber, являющимся строкой.

заранее спасибо

1 ответ

Если твой NationalNumber а также BIC были отдельные типы данных, вы могли создавать шаблоны отображения, хранить их под ~/Views/Shared/DisplayTemplates/NationalNumber.cshtml а также ~/Views/Shared/DisplayTemplates/BIC.cshtml, и тогда он будет автоматически работать, как вы хотите.

Если вы хотите сохранить эти свойства в виде строк, автоматический подход не будет работать для вас, потому что шаблон отображения, созданный для string.cshtml повлияет на все строки в проекте.

Так что создайте шаблон отображения с именем ~/Views/Shared/DisplayTemplates/NationalNumber.cshtmlгде вы бы вручную выводили части числа:

@model string
@String.Format("{0}.{1}.{2}-{3}.{4}", Model.Substring(0, 2), Model.Substring(2, 2), Model.Substring(4, 2), Model.Substring(6, 3), Model.Substring(9, 2))

(обратите внимание на заглавные String, важно) и указать это явно:

@Html.DisplayFor(x=>x.NationalNumber, "NationalNumber")
Другие вопросы по тегам