【发布时间】:2023-04-09 23:45:02
【问题描述】:
我正在尝试在我的 MVC 应用程序的编辑页面上包含一个 Kendo UI ASP.NET MVC 网格,并且我想将该网格限制为仅返回来自当前路由 ID 的值。我一直在研究如何做到这一点,但找不到任何我需要的东西,或者我在这方面太新了,无法将这些点联系起来。
到目前为止,我的想法是要么对 DataSource 应用过滤器,要么向控制器发送一个参数并让它限制 DataSourceResult。
对于视图中的DataSource过滤器,我可以这样做:
.Filter(filters => { filters.Add(d => d.CompanyId).IsEqualTo(2); })
但我不知道如何用来自@ViewContext.RouteData.Values["id"] 之类的值替换硬编码的 2。
给控制器传一个参数,我可以得到如下:
public ActionResult Divisions_Read([DataSourceRequest]DataSourceRequest request, int id)
{
using (var db = new AppContext())
{
IQueryable<Division> divisions = db.Divisions;
DataSourceResult result = divisions.ToDataSourceResult(request, division => new DivisionViewModel
{
DivisionId = division.DivisionId,
CompanyId = division.CompanyId,
CountryId = division.CountryId,
DivisionName = division.DivisionName
});
return Json(result);
}
}
但我不知道如何使用该 id 基本上将“where CompanyId = Id”语句添加到结果中。
有什么想法最好的方法是什么?我是否遗漏了一些非常明显的东西?
谢谢!
ETA:按照 mmillican 和我研究中的其他地方的建议,通过 Read 操作将参数传递给控制器,并进行更改
DataSourceResult result = divisions.ToDataSourceResult(request, division => new DivisionViewModel
到
DataSourceResult result = divisions.Where(c => c.CompanyId == companyId).ToDataSourceResult(request, division => new DivisionViewModel
成功了。控制器中的那个额外部分是我一直在寻找的,但似乎在任何地方都找不到。
【问题讨论】:
标签: kendo-ui kendo-grid asp.net-mvc-5 kendo-asp.net-mvc