2015-04-19 58 views
0

是否有可能將2個單獨的視圖返回給Asp.net中的ajax調用?asp.net mvc,將多個視圖返回爲JSON

例如,如果foo1和foo2是每個都返回一個視圖的2個ActionResult方法?

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

當前正在嘗試這一點,最終的結果是,得到的JavaScript回來作爲一類對象而不是實際的看法,有人知道如何獲得生成的HTML渲染代替?

編輯:我想我實際上會去,有沒有辦法讓我以字符串格式返回呈現的視圖?

+0

'return Json'只返回那個('json'),而不是html。你需要返回一個局部視圖。 –

+0

json本身可以包含字符串形式的html,這是我希望得到的,對不起,我想我的框架有點不正確。 – Kaylee

+0

你有一些代碼。那它的功能不如你預期的那樣?顯示實際產出和預期產出。 – mason

回答

1

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

爲此,你需要做以下的事情:

1.You需要一些方法,可以在其中與對象模型轉達您的視圖名。爲此請參考下面的代碼並添加到你的幫助類。

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.Now調用上面的方法從您的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

希望這是你在找什麼。