4

HTMLメールを作成するwebapiコントローラーアクションがあります。現在、可能な限り単純なものであるため、string.formatを使用してhtmlを作成しています。これは今後より複雑になることを知っており、かみそりのテンプレートを使用したいと考えています。

MVC コントローラーでこれを行う方法の例を見てきましたが、 内でこれを行う方法が見つかりませんWebApiController。これは可能ですか?もしそうなら、あなたは何かリソースを知っていますか? 私のgoogle-fuは私を失敗させています。

4

2 に答える 2

7

Wouter de Kort によるこの記事Rendering an ASP.NET MVC View to a string in a Web Api Controllerを確認してください。

 public static string RenderViewToString(string controllerName, string viewName, 
                                         object viewData)
{
    HttpContextBase contextBase = new HttpContextWrapper(HttpContext.Current);

    var routeData = new RouteData();
    routeData.Values.Add("controller", controllerName);
    var controllerContext = new ControllerContext(contextBase, routeData, 
                                                   new EmptyController());

    var razorViewEngine = new RazorViewEngine();
    var razorViewResult = razorViewEngine.FindView(controllerContext, viewName, 
                                                     "", false);

    var writer = new StringWriter();
    var viewContext = new ViewContext(controllerContext, razorViewResult.View, 
           new ViewDataDictionary(viewData), new TempDataDictionary(), writer);
    razorViewResult.View.Render(viewContext, writer);

    return writer.ToString();
}

private class EmptyController : ControllerBase
{
    protected override void ExecuteCore() { }
}

//You can simply call this from anywhere in your Web Api Controller: 

RenderViewToString("controller", "view", model)
于 2013-04-02T20:43:36.663 に答える