2016-10-25 7 views
1

私のasp.net mvc 5アプリケーションでは、ActionResultを傍受し、レンダリングビューをHTML形式の文字列として含むアクションフィルタを記述することができます。モデルとしてjson?asp.net mvc jsonとしてビューをレンダリングするアクションフィルタ

return Json(new 
             { 
              result = "fail", 
              html = Extensions.RenderViewToString(ControllerContext, "_Partial_CreatePageContainer", model), 
              errors = "This page already exists." 
             }); 

は、私は、ビューのレンダリングを処理するために、2つの拡張メソッドを作成しました::JSON(new { html = ViewAsHTMLString, model = this.ViewsViewModel })

答えて

1

が、私は自分のアプリケーションでこのような単純なのActionResultメソッドを使用します。

は、この擬似コードを考えてみましょう

public static string RenderViewToString(ControllerContext context, string viewName, object model) 
     { 
      if (string.IsNullOrEmpty(viewName)) 
       viewName = context.RouteData.GetRequiredString("action"); 

      var viewData = new ViewDataDictionary(model); 

      using (var sw = new StringWriter()) 
      { 
       var viewResult = ViewEngines.Engines.FindPartialView(context, viewName); 
       var viewContext = new ViewContext(context, viewResult.View, viewData, new TempDataDictionary(), sw); 
       viewResult.View.Render(viewContext, sw); 

       return sw.GetStringBuilder().ToString(); 
      } 
     } 
     public static string RenderViewToString(ControllerContext context, string viewName) 
     { 
      if (string.IsNullOrEmpty(viewName)) 
       viewName = context.RouteData.GetRequiredString("action"); 

      var viewData = new ViewDataDictionary(); 

      using (var sw = new StringWriter()) 
      { 
       var viewResult = ViewEngines.Engines.FindPartialView(context, viewName); 
       var viewContext = new ViewContext(context, viewResult.View, viewData, new TempDataDictionary(), sw); 
       viewResult.View.Render(viewContext, sw); 

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

しかし、これは戻り値を変更するように見えます。私はアクションフィルタとしてこれを行う方法を探していますので、Ajaxリクエストではないときに 'View'を返すことができます。これは役に立ちます! – Victor

+0

偶然、あなたのAjaxリクエストにJqueryを使用していますか? – Mark

+0

私はjQueryを使用していて、 'isAjaxRequest' – Victor

関連する問題