如何访问列表中的值<>在ViewModel为KendoUI网格

本文关键字:ViewModel 网格 KendoUI 何访问 访问 列表 | 更新日期: 2023-09-27 18:06:18

所以我有以下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>
}

但是我真的很想用剑道网格。

如何访问列表中的值<>在ViewModel为KendoUI网格

您正在定义类型为"PecosViewModel"的网格,而它应该是类型为"NPIModel"。如果你在视图中从动作传递ViewModel,那么你可以使用下面的代码:

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

好吧,看起来你把事情搞混了。

网格应该根据您打算在此实例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)
        })
    )

注意:这假设两个类在同一个库中,如果没有相应的替换。

,那么您应该可以访问要绑定的模型属性。

如果你将结果提供给网格,而不执行读取操作,那么只需将现有列表发送给网格以进行数据绑定:

@ (Html.Kendo () .Grid (Model.NpiList)