簡體   English   中英

asp.net mvc,以JSON返回多個視圖

[英]asp.net mvc, returning multiple views as JSON

是否可以在Asp.net中將2個單獨的視圖返回給ajax調用?

例如,如果foo1和foo2是2個分別返回視圖的ActionResult方法?

return Json(new { a = foo1(), b = foo2() });

當前正在嘗試此操作,最終結果是javascript將其作為類對象而不是實際視圖重新獲得,有人知道如何獲取最終呈現的html嗎?

編輯:我猜我實際上要做什么,有沒有辦法讓我以字符串格式返回渲染視圖?

是的,它們是一種以string格式返回視圖的方法。

為此,您需要執行以下操作:

1.您需要一些方法,您可以在其中傳遞您的視圖名稱和對象模型。 為此,請參考下面的代碼並添加到您的幫助器類中。

 public static class RenderViewLib
        {
            public static string RenderPartialView(this Controller controller, string viewName, object model)
            {
                if (string.IsNullOrEmpty(viewName))
                    viewName = controller.ControllerContext.RouteData.GetRequiredString("action");

                controller.ViewData.Model = model;
                using (var sw = new StringWriter())
                {
                    ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
                    var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
                    viewResult.View.Render(viewContext, sw);

                    return sw.GetStringBuilder().ToString();
                }
            }
        }

上面的代碼將以字符串格式返回您的視圖。

2.現在從您的json調用中調用上述方法,如下所示:

 [HttpPost]
    public JsonResult GetData()
    {
        Mymodel model = new Mymodel();
        JsonResult jr = null;

        jr = Json(new
        {
            ViewHtml = this.RenderPartialView("_ViewName", model),
            ViewHtml2 = this.RenderPartialView("_ViewName2", model),
            IsSuccess = true
        }, JsonRequestBehavior.AllowGet);

        return jr;
    }

並且您將從json調用中以string格式獲取視圖。

希望這是您想要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM