gpt4 book ai didi

asp.net-mvc - Infragistics 网格的 GET 返回空响应

转载 作者:行者123 更新时间:2023-12-02 03:23:02 25 4
gpt4 key购买 nike

我正在尝试使用 Infragistics 网格来显示数据库中的项目列表。我在带有 Razor 引擎的 MVC 应用程序中使用代码优先方法和 Entity Framework 。除了 Infragistics 网格之外, View 中的所有内容都工作正常。

这是我的主页 View :

@using Infragistics.Web.Mvc
@model IEnumerable<BusinessModel.Models.TestPlan>

@{
ViewBag.Title = "Home";
}

@( Html.Infragistics().Grid<BusinessModel.Models.TestPlan>(Model)
.AutoGenerateColumns(true)
.DataSourceUrl(Url.Action("igListTestPlan"))
.DataBind()
.Render())

这是我的 Controller :

[GridDataSourceAction]
public ActionResult igListTestPlan()
{
return View(service.getListTestPlan());
}

使用 firebug,我可以清楚地看到发送的请求带有状态代码“200 OK”,但响应选项卡为空。它还会导致控制台出现错误(在 infragistics.js 中):

Uncaught TypeError: Cannot read property 'length' of undefined 

我猜这是因为空响应。

我尝试过的:

调试我的 Controller 后发现 return View(service.getListTestPlan());不返回空列表:我有 3 个有效项目。

我也尝试过Html.Infragistics().Grid<BusinessModel.Models.TestPlan>(Model__.ToList())但一切都没有改变。另外Html.Infragistics().Grid(Model)告诉我参数无效

提前致谢。

最佳答案

我想我很清楚为什么你会得到这个,我也发生过。

MVC 包装器提供网格模型处理服务器上数据的默认方式(将数据源序列化为具有数据“记录”和支持性“元数据”的对象)。但是,如果您自己这样做,因为您没有定义自己的 key ,那么您将陷入用于过滤响应的默认 key “记录”,并且因为它不存在......那么您会收到“未定义”的数据到网格:)

解决方案:

  • 1) 包装您的响应并使用网格的“ResponseDataKey”属性定义匹配键。我之所以建议这样做,是因为据我所知,将响应包装在单个对象中是一个很好的做法 - 认为这会带来一些安全隐患。

  • 2) 如果您不想这样做,只是想让它立即运行,请将“ResponseDataKey”设置为空字符串(“”即可),以便您的响应将被正确过滤(或者更确切地说没有)。

在将网格直接绑定(bind)到 View 中的模型数据的第二部分中 - 据我所知,您正确地得到了错误。 DataSource property明确指出源必须实现 IQueryable 而不是 IEnumerable。在其中添加 .AsQueryable() 应该也可以正常工作。

请告诉我这是否有帮助:)

关于asp.net-mvc - Infragistics 网格的 GET 返回空响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13121902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com