如何异步调用多个存储的过程(模型)并将结果集从控制器分配给MVC中视图中的变量



我在模型中使用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) {
};

最新更新