Как интернационализировать элементы DropDownList с помощью Razor - PullRequest
0 голосов
/ 22 октября 2011

Мы работаем над веб-сайтом MVC, где некоторые списки имеют пользовательские и системные значения.Таким образом, системные элементы должны быть интернационализированы для отображения на языке пользователя, а пользовательские элементы уже на языке пользователя.

Эти системные элементы имеют флаг под названием "IsSystem", чтобы отличать те, которые нам нужныинтернационализация.Этот флаг также означает, что пользователь не может обновить или удалить эти элементы.

Что ж, мы используем @Html.DropDownList для рендеринга этого DropDownList ... поэтому я не нахожу, как перейти к середине загрузки dropdownlistлогика ... для размещения оператора if, проверяющего флаг IsSystem и получающего правильный текст из файлов ресурсов.

Спасибо за любую идею о том, как справиться с этим ...

РЕДАКТИРОВАНИЕ:

Код контроллера:

ViewBag.idTaskType = new SelectList(db.TaskTypes, "idTaskType", "Name");

, где db - это контекст из EntityFramework

Просмотр кода:

@Html.DropDownList("idTaskType", String.Empty)

Ответы [ 2 ]

2 голосов
/ 31 октября 2012

Я представляю ваши таблицы "TaskTypes", как показано ниже

idTaskType  Name
----------  -----
1           Task1
2           Task2
3           Task3

Давайте рассмотрим два разных "App_GlobalResources"

[1] en-US

Name    Value
----    -----
Task1   Create  
Task2   Update
Task3   Delete

[1] sv

Name    Value
----    -----
Task1   Skapa
Task2   Uppdatera
Task3   Ta bort

Теперь разработайте IEnumerable SelectListItem

public IEnumerable<SelectListItem> TaskTypeList { 
        get{
            List<TaskTypes> List = db.TaskTypes.ToList();
            return List.Distinct().OrderBy(x => x.Name).Select(x => new SelectListItem
                    {
                        Value = x.idTaskType.ToString(), 
                        Text = (HttpContext.GetGlobalResourceObject("Task", x.Name)).ToString()
                    });
        } 
    }

Наконец используйте

@Html.DropDownList("idTaskType", new SelectList(Model.TaskTypeList, "Value", "Text"), String.Empty)

Спасибо.

0 голосов
/ 22 октября 2011

Вам понадобятся интернационализированные версии ваших данных.Итак, вы можете сделать что-то вроде этого:

ViewBag.idTaskType = new SelectList(db.TaskTypes
   .Where(x => x.language == "en"), "idTaskType", "Name");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...