ASP.NET MVC: Отображаем Enum на формуе или еще раз о локализации

Из прошлых статей

В одной из прошлых статей я уже писал о том, как можно локализовать Enum при редактировании формы. Как вы помните в MvcTools существует для этого Html.DropDownListFor(). Недавно мне потребовалось просто отобразить на форме значение Enum. Как оказалось, не всё так просто.

Enum. Как оно есть

В библиотеку MvcTools сегодня было добавлено очередное полезное расширение HtmlHelper, которое можно использовать для отображения Enum.

Давайте предположим, что у меня есть некоторое перечисление (Enum):


   1:  publicenum OrderStatus {

   2:      Measurement,

   3:      Calculation,

   4:      Signing,

   5:      Expectation,

   6:      Production,

   7:      Installation,

   8:      Completed

   9:  }

Если я попытаюсь отобразить модель (в моем случае OrderViewModel), в которой содержится свойство типа OrderStatus:


   1:  @if (Model != null && Model.Any()) {

   2:  <table>

   3:  <tr>

   4:  <th>Номер (ID)th>

   5:  <th>Датаth>

   6:  <th>Статусth>

   7:  <th>Менеджерth>

   8:  <th>Заказчикth>

   9:  <th>Примечаниеth>

  10:  tr>

  11:      @foreach (var item in Model) {

  12:  <tr>

  13:  <td>@item.Name (@item.Id)td>

  14:  <td>@Html.DisplayFor(x => item.CreatedAt)td>

  15:  <td>@Html.DisplayFor(x => item.Status)td>

  16:  <td>@Html.DisplayFor(x => item.ManagerFullName)td>

  17:  <td>@Html.DisplayFor(x => item.CustomerFullName)td>

  18:  <td>@Html.DisplayFor(x => item.Description)td>

  19:  tr>

  20:      }

  21:  table>

  22:  @Html.PagerForPagedList(Model.PageIndex, Model, "index", "orders")

  23:  }

Обратите внимание на 15 строку. Status у меня имеет тип OrderStatus, то есть enum. В таблице я увижу следующее:

104-000001

Колонка “статус” выглядит неподобающим образом. Для того чтобы это исправить, надо проделать следующие несложные операции.

Решение задачи отображения Enum

Для начала добавим немного атрибутов:


   1:  publicenum OrderStatus {

   2:  

   3:      [Display(Name = "Замер")]

   4:      Measurement,

   5:  

   6:      [Display(Name = "Расчет")]

   7:      Calculation,

   8:  

   9:      [Display(Name = "Заключение договора")]

  10:      Signing,

  11:  

  12:      [Display(Name = "Ожидание материала")]

  13:      Expectation,

  14:  

  15:      [Display(Name = "Производство")]

  16:      Production,

  17:  

  18:      [Display(Name = "Готов к установке")]

  19:      Installation,

  20:  

  21:      [Display(Name = "Завершен")]

  22:      Completed

  23:  }

В разметке поменяем HtmlHelper на новый EnumDisplayFor из MvcTools:


   1:  @if (Model != null && Model.Any()) {

   2:  <table>

   3:  <tr>

   4:  <th>Номер (ID)th>

   5:  <th>Датаth>

   6:  <th>Статусth>

   7:  <th>Менеджерth>

   8:  <th>Заказчикth>

   9:  <th>Примечаниеth>

  10:  tr>

  11:      @foreach (var item in Model) {

  12:  <tr>

  13:  <td>@item.Name (@item.Id)td>

  14:  <td>@Html.DisplayFor(x => item.CreatedAt)td>

  15:  <td>@Html.EnumDisplayFor(x => item.Status)td>

  16:  <td>@Html.DisplayFor(x => item.ManagerFullName)td>

  17:  <td>@Html.DisplayFor(x => item.CustomerFullName)td>

  18:  <td>@Html.DisplayFor(x => item.Description)td>

  19:  tr>

  20:      }

  21:  table>

  22:  @Html.PagerForPagedList(Model.PageIndex, Model, "index", "orders")

  23:  }

Ваше внимание заслуживает только 15 строка. Запустим приложение и посмотрим результат:

 

104-000002

Колонка “статус” приобрела для пользователей более удобочитаемый вид.

И последнее, что хотелось бы добавить, это то, что на данный момент, локализация из ресурсных файлов не поддерживается, как это реализовано для EnumDropDownList.

Установнка nuget-пакета

Для установки MvcTools-пакета используйте пожалуйста следующий код, который можно выполнить в Pachage Manager Console:

PM> Install-Package MvcTools

Удачного кодирования и да прибудет с вами сила. УлÑ&#139;бка

Подробнее: http://feedproxy.google.com/~r/blogmusor/~3/BBZPPt146MU/104

Читать комменты и комментировать

Добавить комментарий / отзыв



Защитный код
Обновить

ASP.NET MVC: Отображаем Enum на формуе или еще раз о локализации | | 2013-01-16 22:47:14 | | Программирование | | Из прошлых статей В одной из прошлых статей я уже писал о том, как можно локализовать Enum при редактировании формы. Как вы помните в MvcTools существует для этого Html.DropDownListFor(). Недавно мне | РэдЛайн, создание сайта, заказать сайт, разработка сайтов, реклама в Интернете, продвижение, маркетинговые исследования, дизайн студия, веб дизайн, раскрутка сайта, создать сайт компании, сделать сайт, создание сайтов, изготовление сайта, обслуживание сайтов, изготовление сайтов, заказать интернет сайт, создать сайт, изготовить сайт, разработка сайта, web студия, создание веб сайта, поддержка сайта, сайт на заказ, сопровождение сайта, дизайн сайта, сайт под ключ, заказ сайта, реклама сайта, хостинг, регистрация доменов, хабаровск, краснодар, москва, комсомольск |
 
Поделиться с друзьями: