如何在网格列中显示相关实体的属性?

时间:2015-08-08 19:46:59

标签: asp.net asp.net-mvc entity-framework

我有一个名为City的EF类(对应于数据库表)

public partial class 
{
    public int id { get; set; }
    public string Title { get; set; }
    public Nullable<int> PostalCode { get; set; }
    public string Edit { get; set; }
    public string Delete { get; set; }
    public string status { get; set; }
}

我有另一个名为V_STATUS的EF类,它对应于数据库视图:

public partial class V_STATUS
{
    public string ID { get; set; }
    public string TITLE{ get; set; }
} 

在创建网格的MVC视图中,我想显示来自title V_STATUS的{​​{1}} status来自City

<div class="col-lg-12 col-lg-offset-0 col-md-12 col-md-offset-0 col-sm-12 col-sm-offset-0 col-xs-12 col-xs-offset-0 form-group">
    @Html.Grid(Model).Columns(columns => {
        columns.Add(m => m.Title).Titled("Title");
        columns.Add(m => m.PostalCode ).Titled("PostalCode");
        // INSTEAD OF m=> m.status to be shown title from v_status
        columns.Add(m=> m.status).Titled("Status");
        columns.Add().Encoded(false).Sanitized(false).SetWidth(50).RenderValueAs(r =>
            @Html.ActionLink("Edit", "UpdateCity", new { id = r.id })
        );
        columns.Add().Encoded(false).Sanitized(false).RenderValueAs(r =>
            @Html.ActionLink("Delete", "DeleteCity", new { id = r.id })
        );
    }).WithPaging(5).Sortable().Filterable().WithMultipleFilters()
</div>

1 个答案:

答案 0 :(得分:0)

您需要通过将状态属性更改为City属性来包含V_Statusvirtual之间的关系。

包括虚假财产:

public virtual V_STATUS Status { get; set; }
  

代码:

public partial class City
{
    //Existing propertites
    public int id { get; set; }
    public string Title { get; set; }
    public Nullable<int> PostalCode { get; set; }
    public string Edit { get; set; }
    public string Delete { get; set; }

    //Modified property
    public virtual V_STATUS Status { get; set; }
}

我们在这里寻找用户界面:

您的代码:

// INSTEAD OF m=> m.status to be shown title from v_status
        columns.Add(m=> m.status).Titled("Status");  

试试这个:

 columns.Add(m=> m.Status.Title).Titled("Status");//included navigation property Title

注意:

  1. 您已经告诉过V_Status是数据库视图。所以你可能需要 ignore来自City的财产 流畅的API或数据注释。
  2. 如果您想使用一对多关系,则需要在View页面中使用for循环。
  3. 在UI中显示导航属性值的参考:
    So Question

    Article

    如果有帮助,请考虑接受答案。