这是我的index.cshtml的开头:
@model IEnumerable<UsageReportViewModel>
@{
ViewBag.Title = "UsageReport";
}
<h2>UsageItem</h2>
@(Html.Kendo().Grid(Model)
.Name("Index")
.DataSource(data => data
.Ajax()
.Read(read => read.Action("GetUsageItems", "UsageReport", new { id = ViewBag.usageReportId }))
.Model(model => model.Id(m => m.Id))
^指数:
public ActionResult Index(int id)
{
return View();
}
public ActionResult Details(int id)
{
ViewBag.usageReportId = id;
return View();
}
public ActionResult Get([DataSourceRequest] DataSourceRequest request)
{
var GetFile = UsageReportSelection();
return Json(GetFile.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
public ActionResult GetUsageItems([DataSourceRequest] DataSourceRequest request)
{
int id = ViewBag.usageReportId; // <--
var GetFile = UsageReportItems(id);
return Json(GetFile.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
方法GetUsageItems的int id返回“0”。我需要这个来传递一些数据,比如公共ActionResult索引正在使用Get方法。我知道我做错了什么只是不确定是什么。
答案 0 :(得分:0)
你没有像你想要的那样获得ViewBag.usageReportId
的价值。您传递的read => read.Action
方法的ViewBag值将作为服务器端Action方法的额外参数。
因此,您有两种方法可以在控制器操作方法中访问此值。
One - 更改控制器操作方法以获得以下额外参数。
public ActionResult GetUsageItems([DataSourceRequest] DataSourceRequest request, int id)
{
var GetFile = UsageReportItems(id);
return Json(GetFile.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
按照https://www.telerik.com/forums/pass-additional-parameters-to-read-ajax-datasource-method---mvc了解该示例。
两个 - 从QueryString参数访问id
。
public ActionResult GetUsageItems([DataSourceRequest] DataSourceRequest request)
{
var id = Convert.ToInt32(Request.QueryStrings["id"]);
var GetFile = UsageReportItems(id);
return Json(GetFile.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
这可以帮助您解决问题。