C# 剑道UI网格赢得';t从ajax数据源MVC填充

C# 剑道UI网格赢得';t从ajax数据源MVC填充,c#,asp.net-mvc-4,kendo-ui,kendo-grid,C#,Asp.net Mvc 4,Kendo Ui,Kendo Grid,我正试图用来自ajax调用的模型填充剑道网格。这是我的剑道Ui网格,包含.cshtml中的Html.Helpers <div id="grid"> @(Html.Kendo().Grid<OtpadModel.AddressObject>() .Name("Grid") .Pageable() .Sortable() .Selectable(sel => { sel.Mode(GridSelectionMode.Single); }) .Filter

我正试图用来自ajax调用的模型填充剑道网格。这是我的剑道Ui网格,包含.cshtml中的Html.Helpers

<div id="grid">
@(Html.Kendo().Grid<OtpadModel.AddressObject>()
.Name("Grid")
.Pageable()
.Sortable()
.Selectable(sel =>
{
        sel.Mode(GridSelectionMode.Single);
})
.Filterable()
.Scrollable()
.Events(events => events.Change("onChange"))
.Groupable()
.DataSource(dataSource => dataSource
    .Ajax()
    .Read(read => read.Action("GetAddressObjects", "AddressObject"))
    .Model(model => model.Id(p => p.ID)))
.Columns(columns => {
    columns.Bound(p => p.KeyNumber).Title("Šifra objekta");
    columns.Bound(p => p.ObjectType.Type).Title("Vrsta objekta");
    columns.Bound(p => p.ObjectOwners.FirstOrDefault().Owner.Name).Title("Ime vlasnika");
    columns.Bound(p => p.ObjectOwners.FirstOrDefault().Owner.Surname).Title("Prezime vlasnika");
    columns.Bound(p => p.Address.Street).Title("Ulica");
    columns.Bound(p => p.Address.Number).Title("Broj");
    columns.Bound(p => p.Address.City.Name).Title("Grad");
    columns.Bound(p => p.ResidentalArea).Title("Površina");
    columns.Bound(p => p.ResidentsNumber).Title("Članovi");
    columns.Bound(p => p.TuristBedsNumber).Title("Turistički kreveti");
})   
)
</div>

@(Html.Kendo().Grid())
.名称(“网格”)
.Pageable()
.Sortable()
.可选(sel=>
{
选择模式(GridSelectionMode.Single);
})
.可过滤()
.Scrollable()
.Events(Events=>Events.Change(“onChange”))
.Groupable()
.DataSource(DataSource=>DataSource
.Ajax()
.Read(Read=>Read.Action(“GetAddressObjects”、“AddressObject”))
.Model(Model=>Model.Id(p=>p.Id)))
.列(列=>{
columns.Bound(p=>p.KeyNumber).Title(“Šifra objekta”);
columns.Bound(p=>p.ObjectType.Type).Title(“Vrsta objekta”);
columns.Bound(p=>p.ObjectOwners.FirstOrDefault().Owner.Name).Title(“Ime vlasnika”);
columns.Bound(p=>p.ObjectOwners.FirstOrDefault().Owner.姓氏).Title(“Prezime vlasnika”);
列绑定(p=>p.Address.Street).Title(“Ulica”);
columns.Bound(p=>p.Address.Number).Title(“Broj”);
columns.Bound(p=>p.Address.City.Name).Title(“Grad”);
列绑定(p=>p.ResidentalArea).Title(“Površina”);
columns.Bound(p=>p.ResidentsNumber).Title(“Članovi”);
columns.Bound(p=>p.TuristBedsNumber).Title(“Turistički kreveti”);
})   
)
我的控制器方法实现是:

    public ActionResult GetAddressObjects([DataSourceRequest] DataSourceRequest request)
    {
        IEnumerable<AddressObject> addressObjects = unitOfWork.AddressObjectRepository.Get(includeProperties: "ObjectType, Address, ObjectOwners");
        DataSourceResult result = addressObjects.ToDataSourceResult(request);
        return Json(result, JsonRequestBehavior.AllowGet);           
    }
public ActionResult GetAddressObjects([DataSourceRequest]DataSourceRequest请求)
{
IEnumerable addressObjects=unitOfWork.AddressObjectRepository.Get(includeProperties:“ObjectType,Address,ObjectOwners”);
DataSourceResult结果=addressObjects.ToDataSourceResult(请求);
返回Json(结果,JsonRequestBehavior.AllowGet);
}

我有所有的推荐信。我可以从服务器端进行填充,所以当我编写网格(模型)时,会填充网格,但我不希望这样

将属性autobind设置为false

@(Html.Kendo().Grid<OtpadModel.AddressObject>()
.Name("Grid")
.Pageable()
.Sortable()
.Selectable(sel =>
{
        sel.Mode(GridSelectionMode.Single);
})
.AutoBind(false)
.Filterable()
.Scrollable()
.Events(events => events.Change("onChange"))
.Groupable()
.DataSource(dataSource => dataSource
    .Ajax()
    .Read(read => read.Action("GetAddressObjects", "AddressObject"))
    .Model(model => model.Id(p => p.ID)))
.Columns(columns => {
    columns.Bound(p => p.KeyNumber).Title("Šifra objekta");
    columns.Bound(p => p.ObjectType.Type).Title("Vrsta objekta");
    columns.Bound(p => p.ObjectOwners.FirstOrDefault().Owner.Name).Title("Ime vlasnika");
    columns.Bound(p => p.ObjectOwners.FirstOrDefault().Owner.Surname).Title("Prezime vlasnika");
    columns.Bound(p => p.Address.Street).Title("Ulica");
    columns.Bound(p => p.Address.Number).Title("Broj");
    columns.Bound(p => p.Address.City.Name).Title("Grad");
    columns.Bound(p => p.ResidentalArea).Title("Površina");
    columns.Bound(p => p.ResidentsNumber).Title("Članovi");
    columns.Bound(p => p.TuristBedsNumber).Title("Turistički kreveti");
})   

希望这有帮助。祝你好运。

谢谢大家的大力帮助。问题是我的一个类有一个虚拟属性,问题是虚拟关键字。不能有任何虚拟对象,请始终映射到ViewModel。但不小心,我的ViewModel中的一个属性是虚拟的(复制、粘贴错误)

您是否尝试过在Fiddler中调试以查看是否调用了您的操作?还可以尝试添加一个error handler.Events(e=>e.error(“error_handler”))并创建javascript函数。正在调用我的操作,并且控制器中的addressObjects和result变量已正确填充。“因此,当我编写网格(模型)时,网格已填充,但我不希望这样。”我不清楚问题是什么?问题是:当我从模型填充网格并传递到视图-Viwe(myPopulatedModel),然后在视图中填充网格(模型),它是有人居住的。由于某些限制,我无法进行服务器端填充,因此需要使用Ajax在客户端填充。即使我在控制器中的操作被调用和填充,这也不起作用。你确定
read.Action(“GetAddressObjects”,“AddressObject”)
是正确的吗?你以前有过这项工作吗?我的意思是,这是您以前遇到的问题吗?与您的问题不完全相同,但我现在确实按照我使用ajax绑定向您解释的方式绑定了一些网格。将自动绑定设置为false后,将不会调用服务器。调用“grid.dataSource.read()”时,将按照网格读取操作中的定义进行调用。
var grid = $("#yourgridElementName").data("kendoGrid");
grid.dataSource.read();