MVC: заменить значение идентификатора (внешнего ключа) в представлении на его значение - PullRequest
1 голос
/ 30 сентября 2011

Предположим, у нас есть эти две таблицы, связанные внешним ключом CAT_ID:

Категория [CAT_ID, CAT_NAME]
cat_id = 1, cat_name = классическая
cat_id = 2, cat_name = Jazz
...

Музыкальные альбомы [ALBUM_ID, ALBUM_NAME, CAT_ID]
album_id = 1, album_name = Wagner - Parsifal, cat_id = 1
album_id = 2, album_name = "Дэвис Майлз - вид голубого цвета, cat_id = 2

Как я могу отобразить в MVC View вместо CAT_ID его значение (то есть: CAT_NAME)?
вот так:
---------
Музыка
1 | Вагнер - Парсифаль | Классическая
2 | Дэвис Майлз - Вид Синего | Джаз
---------

Спасибо

1 Ответ

0 голосов
/ 21 ноября 2011

Требуется функция внешнего ключа (она помечена как новая, поэтому может быть недоступна при первом просмотре):

http://demos.telerik.com/aspnet-mvc/grid/foreignkeycolumn

(Просмотреть код (с их сайта, немногоочищен))

 Html.Telerik().Grid<ClientEditableOrder>()
       .Name("Grid")                      
       .Columns(columns =>
       {
           columns.Bound(o => o.OrderID).Width(100);
           columns.ForeignKey(o => o.EmployeeID, (IEnumerable<employee>)ViewData["employees"],
               "ID", "Name").Width(230);
           columns.Bound(o => o.OrderDate).Width(150);
           columns.Bound(o => o.Freight).Width(220);               
       })
       //..etc..
       .Render();

В начальном действии контроллера заданы ViewData:

public ActionResult Edit() {
        var r = _userService.GetAllemployees().ToList();
        ViewData["employees"] = r;
        return View();
    }

Их действие контроллера 'AjaxEdit' делает некоторые вещи с явно указанными в параметрах внешними ключами в параметрах,Но так как мой объект раскрыл поля FK, которые я обнаружил, сработал, как и ожидалось, без каких-либо хитрых дел.

Бонусные баллы для всех, кто может предоставить пример фильтрации / сортировки отображаемого значения в этих столбцах какэти функции применяются сами к значению id, а не к отображаемой строке (раздражает!)

...