如何获取查询字符串值传入Kendo Grid的update方法并传递给MVC控制器
解决方案
你需要将URL查询字符串中的chiefEvalCriteriaId参数传递到Controller的EditEvaluationCriteria方法有两种可行方案,你当前使用的是Server模式DataSource,优先推荐第一种:
方案一:CSHTML服务端直接读取查询参数
直接在Razor视图中通过Request.QueryString读取URL参数,拼到Update请求的路由参数中即可:
将你代码里DataSource的Update配置段修改为:
.Update("EditEvaluationCriteria", "EvaluationCriteria", new { area = "Proposal", Id = Model.SolicitationDetails.SolicitationID, // 直接读取URL中的查询字符串参数 chiefEvalCriteriaId = Request.QueryString["chiefEvalCriteriaId"] != null ? int.Parse(Request.QueryString["chiefEvalCriteriaId"].ToString()) : 0 })
这种方式不需要额外写JS代码,服务端渲染的时候就会把参数直接写入Grid的更新请求地址,Controller可以直接接收到参数值。
方案二:前端JS动态传参(适合Ajax模式DataSource场景)
如果你的Grid后续切换为Ajax绑定模式,可以通过JS读取浏览器地址参数传递:
- 先在页面添加JS代码实现查询字符串读取和参数传递:
// 读取URL查询参数的通用方法 function getQueryString(name) { const reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i"); const result = window.location.search.substr(1).match(reg); return result ? decodeURIComponent(result[2]) : null; } // 给Grid更新请求附加参数 function addUpdateParams() { return { chiefEvalCriteriaId: getQueryString("chiefEvalCriteriaId") } }
- 修改Grid的DataSource Update配置为:
.Update(update => update.Action("EditEvaluationCriteria", "EvaluationCriteria", new { area = "Proposal", Id = Model.SolicitationDetails.SolicitationID }) .Data("addUpdateParams")
两种方案都可以保证Controller的EditEvaluationCriteria方法正常接收到chiefEvalCriteriaId参数值,无需修改Controller现有代码即可正常使用。
内容的提问来源于stack exchange,提问作者NetBlazer
相关产品推荐
相关产品推荐

