我在模型中使用edmx。
现在在控制器中,我知道最初将调用索引。
如果我想在页面加载时获取多个结果集怎么办? 如何调用多个存储的过程并将结果分配给视图中的变量?
控制器代码
public ActionResult ViewQuery() {
DBController dBController = new DBController();
ViewBag.JsonData = new JavaScriptSerializer().Serialize(dBController.xxxxx());
return View();
}
现在在视图中,我有以下行,如果代码放在 Index() 中,它会从控制器获取值
var resultset=@(Html.Raw(ViewBag.JsonData))
如果我在函数中具有当前ViewQuery()
Index()
代码,那么它工作正常,但是如果我有它ViewQuery
它就不起作用了!我没有得到ViewBag.JsonData
请帮助
需要添加 JsonRequestBehavior.AllowGet in Json(...)
public ActionResult ViewQuery()
{
DBController dBController = new DBController();
var result = Json(dBController.usp_xxxxxxx());
return Json(dBController.usp_xxxxxxx(),JsonRequestBehavior.AllowGet);
}
使用异步分部视图
提高 ASP.NET MVC 网站的感知性能 这篇文章告诉你如何使用jquery和mvcparital视图来异步加载页面。
如果您不想使用这种方式,请查看此问题 如何将 JsonResult 从控制器发送到视图并使用 jQuery 访问它?
已更新(更改您的代码):
public ActionResult ViewQuery()
{
DBController dBController = new DBController();
ViewBag.JsonData= dBController.GetXXX();
return Json(dBController.usp_CIOChallenge_Admin_view_query(), JsonRequestBehavior.AllowGet);
}
在您的视图中,您可以对控制器进行 AJAX 调用以获取结果
$.ajax({
url: "Home/ViewQuery",
responseType:"json",
success: successfn,
error:errorfn
});
function successfn(result) {
};