【问题标题】:MVC: Replace A ID Value (of a Foreign Key) In A View By Its ValueMVC:将视图中的(外键的)ID值替换为其值
【发布时间】:2011-09-30 08:02:07
【问题描述】:

假设我们有这两个表,通过外键 CAT_ID 绑定:

类别[CAT_ID,CAT_NAME]
cat_id = 1, cat_name= 经典
cat_id = 2,cat_name = 爵士乐
...

音乐专辑[ALBUM_ID、ALBUM_NAME、CAT_ID]
专辑 ID = 1,专辑名称 = 瓦格纳 - 帕西法尔,cat_id = 1
album_id = 2, album_name = "Davis Miles - 一种蓝色,cat_id = 2

如何在 MVC 视图而不是 CAT_ID 上显示其值(即:CAT_NAME)?
像这样:
---------
音乐
1 |瓦格纳 - 帕西法尔 | 古典
2 |戴维斯·迈尔斯 - 一种蓝色 | 爵士乐
---------

谢谢

【问题讨论】:

    标签: model-view-controller data-binding binding mapping


    【解决方案1】:

    您想要外键功能(它被标记为新功能,因此在您第一次查看时可能不可用):

    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”控制器动作做了一些时髦的事情,在参数中明确列出了外键 ID。但是,当我的对象暴露了我发现的 FK 字段时,我可以按预期工作,而不需要任何棘手的业务..

    任何人都可以提供对这些列上显示的值进行过滤/排序的示例,因为这些功能适用于底层的“id”值而不是显示的字符串(烦人!)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-21
      • 2015-03-08
      • 2015-08-03
      • 2018-06-16
      • 1970-01-01
      • 2018-03-11
      • 2016-01-29
      • 1970-01-01
      相关资源
      最近更新 更多