如何从List<>中访问值在ViewModel for KendoUI Grid中

时间:2016-09-08 17:05:35

标签: c# asp.net-mvc kendo-ui kendo-grid

所以我有以下ViewModel:

public class PecosViewModel
{
    public string SearchTerm { get; set; }
    public List<NPIModel> NpiList { get; set; }
}

在cshtml页面上,我正在尝试做类似

的事情
@(Html.Kendo().Grid<Models.ViewModels.PecosViewModel>()
        .Name("npi-grid")
        .Columns(columns =>
        {
            columns.Bound(c => c.NpiList)
        })
    )

我无法访问NpiList的任何属性(如FirstName或LastName)。

我可以做一些非常简单的事情:

foreach (var item in Model.NpiList)
{
    <div>@item.NPI @String.Format("{0}, {1}", @item.ProviderLastName, @item.ProviderFirstName)</div>
}

但我真的很想使用Kendo Grid。

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:0)

您正在定义“PecosViewModel”类型的网格,而它应该是“NPIModel”类型。 如果您从视图中的操作传递ViewModel,则可以使用以下代码:

@model Models.ViewModels.PecosViewModel

@(Html.Kendo().Grid(Model.NpiList)
        .Name("npi-grid")
        .Columns(columns =>
        {
            columns.Bound(c => c.NPI)
        })
    )

答案 1 :(得分:0)

好吧,看起来你在这里混淆了一些事情。

应该针对您要在此实例NPIModel而不是视图模型中使用的模型键入网格。

您在那里的代码将列与视图模型中的列表绑定。

所以而不是:

@(Html.Kendo().Grid<Models.ViewModels.PecosViewModel>()
        .Name("npi-grid")
        .Columns(columns =>
        {
            columns.Bound(c => c.NpiList)
        })
    )

你也需要改变它:

@(Html.Kendo().Grid<Models.ViewModels.NPIModel>()
        .Name("npi-grid")
        .Columns(columns =>
        {
            columns.Bound(c => c.FirstName)
        })
    )

NB:这假设两个类都在同一个库中,如果不相应地替换。

然后您应该有权访问要绑定的模型属性。

如果您正在向网格提供结果而不执行读取操作,那么只需将现有列表发送到网格即可绑定该数据:

e.g。的 @(Html.Kendo()。网格(Model.NpiList)