私の見解では、HTMLファイルのコンテンツを部分ビューとしてレンダリングしたいと思います。これを.cshtmlビューに追加すると、このエラーが発生します:
@Html.Partial(Url.Content("~/Test/main.html"))
エラー:
Exception Details: System.InvalidOperationException: The partial view '/Scripts/main.html' was not found or no view engine supports the searched locations. The following locations were searched:
/Scripts/main.html
ただし、ファイルは物理的にそこにあります。これを行うべき別の方法はありますか?
これにはHtml.Partial
を使用できません。これは、部分ビューをレンダリングするための特別なヘルパーメソッドです。代わりに、次のようにAction
を追加できます。
[ChildActionOnly]
public ActionResult GetHtmlPage(string path)
{
return new FilePathResult(path, "text/html");
}
そして、 Html.Action
ヘルパーメソッドを使用して、View
から呼び出すことができます:
@Html.Action("GetHtmlPage","controllername", new { path = "~/Test/main.html" })
次の手順を実行します
簡単な答えは、main.htmlファイルの名前をmain.cshtmlに変更することです。これは、レンダリングのためにRazorビューエンジンによって認識されます。
これをcshtmlビューで使用できます。
@{this.GetOutputWriter().Write(File.ReadAllText(Server.MapPath("/your/static/file.html")));}
Ajaxリクエストを使用してhtmlファイルを取得し、コンテンツをメインhtmlに出力します。これはhtmlファイルであるため、後続の呼び出しでキャッシュされ、パフォーマンスへの影響はありません。