1

アクション内にview.cshtmlファイルを実装し、その結果を文字列として取得したいのですが、アクションメソッドからActionResultとして返されません。
コードで説明するには、次の代わりに:

public ActionResult Tesst()
        {
            // return ViewResult
            return View();
        }

そうでなければなりません:

public string Test()
        {
            string viewResult = string.Empty;
            // implement "test.cshtml" and get its result as string
            // assign result to viewResult variable
            return viewResult;
        }

どんな助けでもいただければ幸いです。

4

1 に答える 1

1

次のようなものを使用して、アプリ内のビューを文字列にレンダリングします。

public static string RenderViewToString(System.Web.Mvc.Controller controller,
                                  string viewName, string layout, object model)
{
    controller.ViewData.Model = model;
    using (StringWriter sw = new StringWriter())
    {
        ViewEngineResult viewResult =
                   ViewEngines.Engines.FindView(
                           controller.ControllerContext, viewName, layout);
        ViewContext viewContext = new ViewContext(
                   controller.ControllerContext, 
                   viewResult.View, controller.ViewData, 
                   controller.TempData, sw);
        viewResult.View.Render(viewContext, sw);

        return sw.GetStringBuilder().ToString();
    }
}
于 2012-11-21T14:30:53.563 に答える