を解析しMVC
PartialView
てプレーンな html 文字列に変換し、HttpResponseMessage
fromとして送信する必要がありますApiController
。
私が見つけたWebを検索し、ヘルパーをサポートしていないか、その結果エラーがスローされたため(RazorEngineステートメントに従って)RazorEngine
、使用に失敗しました。MVC
@Html
@Styles.Render("~/css")
から部分ビューをレンダリングする方法はありますApiController
か?
Razor vs. MVC vs. WebPages vs. RazorEngine
Razor がこの一連のテクノロジのどこに位置するかについては、しばしば混乱があります。基本的に Razor は、テキスト テンプレートを取得してコンパイル可能なクラスに変換する作業を行う解析フレームワークです。MVC と WebPages に関しては、どちらもこの解析エンジンを利用して、テキスト テンプレート (ビュー/ページ ファイル) を実行可能なクラス (ビュー/ページ) に変換します。「@Html、@Url はどこですか」などの質問がよく寄せられます。これらは Razor 自体によって提供される機能ではなく、MVC および WebPages フレームワークの実装の詳細です。
RazorEngine は、Razor パーサーのもう 1 つのコンシューマー フレームワークです。Razor パーサーのインスタンス化をまとめ、ランタイム テンプレート処理を使用するための共通フレームワークを提供します。
私のコード:
Func<string, string, object, HttpResponseMessage> renderTemplate = (templatePath, templateName, model) =>
{
var viewPath = HttpContext.Current.Server.MapPath(templatePath);
var template = File.ReadAllText(viewPath);
//Here throws error because it does not support MVC helpers like "@Html"
var parsedTemplate = Engine.Razor.RunCompile(template, templateName, null, model);
var response = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(parsedTemplate) };
response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
return response;
};
上記の関数をこの方法で呼び出していましたが、もちろん機能しません。
renderTemplate(templatePath, "keyName", data);
ありがとう!