Как отформатировать строковое свойство в классе модели 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")