Ajax MVC控制器传递JSON数据,但剑道网格不显示它
我在Razor PartialView中运行了一些剑道网格(动态分配的数量)。网格旨在通过AJAX从MVC控制器请求数据。控制器接收到读取请求,请求正常,控制器通过JSON将数据通过线路传回(通过Fiddler验证)。 不幸的是,网格从不显示数据。我是新手,不知从哪里开始。据我所知,代码与此场景的剑道示例相匹配。这不是一个数据或模型问题,因为这两者都在应用程序的其他部分中使用,没有问题 控制员:Ajax MVC控制器传递JSON数据,但剑道网格不显示它,ajax,json,kendo-ui,kendo-grid,kendo-asp.net-mvc,Ajax,Json,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我在Razor PartialView中运行了一些剑道网格(动态分配的数量)。网格旨在通过AJAX从MVC控制器请求数据。控制器接收到读取请求,请求正常,控制器通过JSON将数据通过线路传回(通过Fiddler验证)。 不幸的是,网格从不显示数据。我是新手,不知从哪里开始。据我所知,代码与此场景的剑道示例相匹配。这不是一个数据或模型问题,因为这两者都在应用程序的其他部分中使用,没有问题 控制员: public class MemberController : Controller { p
public class MemberController : Controller
{
private MemberContext db = new MemberContext();
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Grid_Member_Read([DataSourceRequest] DataSourceRequest request,
int club_id)
{
var results = from r in db.Members where r.MemberClub.Id == club_id select r;
return Json(results.ToDataSourceResult(request));
}
}
部分观点:
@(Html.Kendo().Grid<RegistrationManagement.Models.Member>()
.Name("MembersGrid")
.Columns(columns =>
{
columns.Bound(p => p.LastName);
columns.Bound(p => p.FirstName);
columns.ForeignKey(p => p.MemberStatusID, (System.Collections.IEnumerable)ViewData["status"], "Value", "Text");
columns.Bound(p => p.RegistrationYear);
columns.Bound(p => p.StreetAddress1);
columns.Bound(p => p.StreetAddress2);
columns.Bound(p => p.State);
columns.Bound(p => p.ZipCode);
columns.Bound(p => p.Email);
columns.Bound(p => p.PhoneNumber);
columns.Command(command => { command.Custom("Edit2").Click("CustomEdit"); command.Edit(); command.Destroy(); }).Width(160);
})
.ToolBar(toolbar => toolbar.Create())
.Editable()
.Groupable()
.Pageable()
.Sortable()
.Scrollable()
.Filterable()
.DataSource(dataSource => dataSource
.Ajax()
.PageSize(20)
.Batch(true)
.ServerOperation(false)
.Events(events => events.Error("error_handler"))
.Model(model =>
{
model.Id(p => p.Id);
model.Field(p => p.MemberStatus).Editable(false);
})
.Read(read => read
.Action("Grid_Member_Read", "Member", new { club_id = @ViewBag.ClubID })
)
.Create(create => create.Action("Grid_Member_Create", "Member", new { ClubID = @ViewBag.ClubID }))
.Update(update => update.Action("Grid_Member_Update", "Member"))
.Destroy(destroy => destroy.Action("Grid_Member_Destroy", "Member"))
)
)
fiddler数据:
控制器对电网1读取请求的响应:
{"Data":[{"MemberClub":{"ClubRegion":{"Id":0,"Code":"TE","Name":"Test"},"ClubStatus": {"Id":0,"Name":"Unknown"},"RelationshipManager":{},"Id":1,"ClubName":"B Club","RegistrationYear":2000,"StreetAddress1":"street","StreetAddress2":"a","City":"city","State":"state","ZipCode":11111,"PhoneNumber":"555-1212","Email":"a@a.com","URL":"www.w.w."},"MemberStatus":{"Id":2,"Name":"Active"},"Id":1,"MemberClubID":1,"MemberStatusID":2,"MembershipNumberRoot":1,"LastName":"last","FirstName":"Edited","StreetAddress1":"street","StreetAddress2":"a","City":"city","State":"state","ZipCode":"11111","PhoneNumber":"555-1212","Email":"a@a.com","RegistrationYear":2000},{"MemberClub":{"ClubRegion":{"Id":0,"Code":"TE","Name":"Test"},"ClubStatus":{"Id":0,"Name":"Unknown"},"RelationshipManager":{},"Id":1,"ClubName":"B Club","RegistrationYear":2000,"StreetAddress1":"street","StreetAddress2":"a","City":"city","State":"state","ZipCode":11111,"PhoneNumber":"555-1212","Email":"a@a.com","URL":"www.w.w."},"MemberStatus":{"Id":10,"Name":"New"},"Id":10,"MemberClubID":1,"MemberStatusID":10,"MembershipNumberRoot":null,"LastName":"1","FirstName":"1","StreetAddress1":"1","StreetAddress2":"1","City":null,"State":"1","ZipCode":"1","PhoneNumber":"1","Email":"1","RegistrationYear":1},{"MemberClub":{"ClubRegion":{"Id":0,"Code":"TE","Name":"Test"},"ClubStatus":{"Id":0,"Name":"Unknown"},"RelationshipManager":{},"Id":1,"ClubName":"B Club","RegistrationYear":2000,"StreetAddress1":"street","StreetAddress2":"a","City":"city","State":"state","ZipCode":11111,"PhoneNumber":"555-1212","Email":"a@a.com","URL":"www.w.w."},"MemberStatus":{"Id":10,"Name":"New"},"Id":11,"MemberClubID":1,"MemberStatusID":10,"MembershipNumberRoot":null,"LastName":"2","FirstName":"2","StreetAddress1":"2","StreetAddress2":"2","City":null,"State":"2","ZipCode":"2","PhoneNumber":"2","Email":"2","RegistrationYear":2}],"Total":3,"AggregateResults":null,"Errors":null}
{"Data":[{"MemberClub":{"RelationshipManager":{},"Id":2,"ClubName":"Test Club","RegistrationYear":2000,"StreetAddress1":"street","StreetAddress2":"a","City":"city","State":"state","ZipCode":11111,"PhoneNumber":"555-1212","Email":"a@a.com","URL":"www.w.w.","ClubRegion":{"Id":0,"Code":"TE","Name":"Test"},"ClubStatus":{"Id":0,"Name":"Unknown"}},"MemberStatus":{"Id":10,"Name":"New"},"Id":13,"MemberClubID":2,"MemberStatusID":10,"MembershipNumberRoot":2,"LastName":"Dude","FirstName":"Random","StreetAddress1":"street","StreetAddress2":"a","City":"City","State":"State","ZipCode":"11111","PhoneNumber":"555-1212","Email":"b@b.com","RegistrationYear":2012}],"Total":1,"AggregateResults":null,"Errors":null}
控制器对网格2读取请求的响应:
{"Data":[{"MemberClub":{"ClubRegion":{"Id":0,"Code":"TE","Name":"Test"},"ClubStatus": {"Id":0,"Name":"Unknown"},"RelationshipManager":{},"Id":1,"ClubName":"B Club","RegistrationYear":2000,"StreetAddress1":"street","StreetAddress2":"a","City":"city","State":"state","ZipCode":11111,"PhoneNumber":"555-1212","Email":"a@a.com","URL":"www.w.w."},"MemberStatus":{"Id":2,"Name":"Active"},"Id":1,"MemberClubID":1,"MemberStatusID":2,"MembershipNumberRoot":1,"LastName":"last","FirstName":"Edited","StreetAddress1":"street","StreetAddress2":"a","City":"city","State":"state","ZipCode":"11111","PhoneNumber":"555-1212","Email":"a@a.com","RegistrationYear":2000},{"MemberClub":{"ClubRegion":{"Id":0,"Code":"TE","Name":"Test"},"ClubStatus":{"Id":0,"Name":"Unknown"},"RelationshipManager":{},"Id":1,"ClubName":"B Club","RegistrationYear":2000,"StreetAddress1":"street","StreetAddress2":"a","City":"city","State":"state","ZipCode":11111,"PhoneNumber":"555-1212","Email":"a@a.com","URL":"www.w.w."},"MemberStatus":{"Id":10,"Name":"New"},"Id":10,"MemberClubID":1,"MemberStatusID":10,"MembershipNumberRoot":null,"LastName":"1","FirstName":"1","StreetAddress1":"1","StreetAddress2":"1","City":null,"State":"1","ZipCode":"1","PhoneNumber":"1","Email":"1","RegistrationYear":1},{"MemberClub":{"ClubRegion":{"Id":0,"Code":"TE","Name":"Test"},"ClubStatus":{"Id":0,"Name":"Unknown"},"RelationshipManager":{},"Id":1,"ClubName":"B Club","RegistrationYear":2000,"StreetAddress1":"street","StreetAddress2":"a","City":"city","State":"state","ZipCode":11111,"PhoneNumber":"555-1212","Email":"a@a.com","URL":"www.w.w."},"MemberStatus":{"Id":10,"Name":"New"},"Id":11,"MemberClubID":1,"MemberStatusID":10,"MembershipNumberRoot":null,"LastName":"2","FirstName":"2","StreetAddress1":"2","StreetAddress2":"2","City":null,"State":"2","ZipCode":"2","PhoneNumber":"2","Email":"2","RegistrationYear":2}],"Total":3,"AggregateResults":null,"Errors":null}
{"Data":[{"MemberClub":{"RelationshipManager":{},"Id":2,"ClubName":"Test Club","RegistrationYear":2000,"StreetAddress1":"street","StreetAddress2":"a","City":"city","State":"state","ZipCode":11111,"PhoneNumber":"555-1212","Email":"a@a.com","URL":"www.w.w.","ClubRegion":{"Id":0,"Code":"TE","Name":"Test"},"ClubStatus":{"Id":0,"Name":"Unknown"}},"MemberStatus":{"Id":10,"Name":"New"},"Id":13,"MemberClubID":2,"MemberStatusID":10,"MembershipNumberRoot":2,"LastName":"Dude","FirstName":"Random","StreetAddress1":"street","StreetAddress2":"a","City":"City","State":"State","ZipCode":"11111","PhoneNumber":"555-1212","Email":"b@b.com","RegistrationYear":2012}],"Total":1,"AggregateResults":null,"Errors":null}
对表格3的答复:
{“数据”:[],“总计”:0,“聚合结果”:null,“错误”:null}
Note: Do not try to corrupt JSON data as mentioned by Kendo UI admin
data: JSON.stringify({ Technicians:("#Technicians").data("kendoMultiSelect").dataItems() })
(哪一个是正确的)
在开始显示多个网格之前,我有一个网格,它使用从控制器传递的模型来包含数据。这非常有效。然后我添加了动态网格创建(三个网格都使用一个传递的模型),它们都显示了请求的最后一个模型数据,所以我开始使用AJAX方法
这个问题不完全是骗人的;以前也曾提出过类似的问题,但没有一个问题会将附加值传递给控制器的读取功能(已正确填充),而且,据我所知,我已经实现了这些问题和剑道站点中建议的更改,但没有成功
这必须是基本的东西。有什么想法吗
谢谢 尝试从ActionMethod中删除
[AcceptVerbs(HttpVerbs.Post)]
属性您可以将JSON数据从剑道网格发送到mvc控制器
您需要遵循这些步骤
var serviceUrl = '/Enrollment/EnrollCourse';
//Pass the items from the grid to the controll. Enroll a user for a course
$.ajax({
type: "POST",
url: serviceUrl,
data: JSON.stringify($("#grid").data("kendoGrid").dataItems()),
contentType: "application/json; charset=utf-8",
dataType: "json"
}).done(function (data, textStatus, request) {
alert('success.');
$("#grid").data('kendoGrid').dataSource.data([]);
}).fail(function (jqXHR, textStatus, errorThrown) {
alert('Error.');
});
[HttpPost]
公共行动结果注册课程(IEnumerable注册)
{
返回Json(JsonRequestBehavior.AllowGet);
}
Note: Do not try to corrupt JSON data as mentioned by Kendo UI admin
data: JSON.stringify({ Technicians:("#Technicians").data("kendoMultiSelect").dataItems() })
你能检查一下你的网格没有重复的名字吗?这可能是造成这种行为的原因。(注意:您似乎没有指定read as POST的类型)