web-dev-qa-db-ja.com

ASP.NET MVCビューでHTMLファイルをレンダリングしますか?

私の見解では、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

ただし、ファイルは物理的にそこにあります。これを行うべき別の方法はありますか?

22
TruMan1

これには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" })
33
Selman Genç

私はそれがより良い解決策だと思う:WriteFileオブジェクトからResponseを使用する

@Response.WriteFile(pathToMyHtmlFile)

here から取得

6
Mahmoodvcs

次の手順を実行します

  1. 〜/ views/sharedフォルダーにビューを作成します。 test.cshtmlという名前を付けます
  2. Htmlのコンテンツをコピーします。
  3. ページでhtml.partial( "test")を使用して、そのビューのhtmlをレンダリングします
6
Ankush Jain

簡単な答えは、main.htmlファイルの名前をmain.cshtmlに変更することです。これは、レンダリングのためにRazorビューエンジンによって認識されます。

5
Fanie Reynders

これをcshtmlビューで使用できます。

@{this.GetOutputWriter().Write(File.ReadAllText(Server.MapPath("/your/static/file.html")));}
2
Fit Dev

Ajaxリクエストを使用してhtmlファイルを取得し、コンテンツをメインhtmlに出力します。これはhtmlファイルであるため、後続の呼び出しでキャッシュされ、パフォーマンスへの影響はありません。

0