Как работать с локализацией перечислений POCO в asp.net mvc - лучшая практика - PullRequest
1 голос
/ 22 апреля 2011

Позвольте мне предварить это, говоря, что я довольно новичок в ASP.NET MVC. Я решил использовать расширения Telerik ASP.NET MVC http://www.telerik.com/products/aspnet-mvc.aspx

Я бы хотел услышать от вас рекомендацию, как справиться со следующей ситуацией.

У меня есть класс модели POCO с именем Print.

public class Print
{
    public int Id { get; set; }
    public DateTime Date { get; set; }
    public PrintStatus Status { get; set; }

}

Я передаю коллекцию объектов этого класса для просмотра, чтобы показать ее в сетке. Вид выглядит следующим образом:

...
@{
    var grid = Html.Telerik().Grid(Model)
         .Name("Grid")
         .DataKeys(keys =>
         {
            keys.Add(o => o.Id);
         })
                   .Columns(columns =>
         {
                 columns.Bound(o => o.Date).Title(ModRes.Print.Date);
                 columns.Bound(o => o.Status)).Title(ModRes.Print.Status);
                              })
         .DataBinding(dataBinding =>
         {
             dataBinding.Server().Select("Index", "Print")
             .Insert("Insert", "Print")
             .Update("Save", "Print")
             .Delete("Delete", "Print");
         })
         .Sortable()
         .Pageable()
         .Filterable()
         .Groupable()
         .Footer(true);

 }
@grid
...

Соответствующая строка такова:

columns.Bound(o => o.Status)).Title(ModRes.Print.Status);

Как видите, в сетке будет использоваться свойство Status, которое является перечислением. Однако это приводит к вопросу о том, как его локализовать, т. Е. Как показать различные переводы свойства Status.

Моя мысль состоит в том, чтобы наследовать от класса Print и разрешить дополнительное строковое свойство, которое будет содержать перевод и позволяет создавать класс Print из него в фоновом режиме (я слышал, что библиотека Automapper может быть полезна в этом). Это, однако, кажется уродливым решением для меня.

Спасибо за ваш вклад.

1 Ответ

1 голос
/ 23 апреля 2011

Создайте экземпляр ResourceManager и используйте статус печати в качестве ключа поиска для файла ресурсов.Или, если вы локализуетесь в базе данных, сделайте то же самое с БД.Если вам нужно, чтобы ключ был более конкретным, добавьте какой-нибудь префикс.

Эта ссылка может помочь:

http://msdn.microsoft.com/en-us/library/c6zyy3s9.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...