在ASP.NET MVC视图中呈现HTML文件?

时间:2014-01-01 18:41:15

标签: asp.net asp.net-mvc asp.net-mvc-4 razor

在我看来,想要将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

虽然文件在那里。我应该采取不同的方式吗?

7 个答案:

答案 0 :(得分:33)

您无法使用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" })

答案 1 :(得分:6)

请按照以下步骤操作

  1. 在〜/ views / shared文件夹中创建一个视图。命名为test.cshtml
  2. 复制其中的html内容。
  3. 在页面上使用html.partial(“test”)来呈现该视图的html

答案 2 :(得分:5)

简单的答案是将main.html文件重命名为main.cshtml,Razor视图引擎会将其识别为渲染。

答案 3 :(得分:5)

我认为这是一个更好的解决方案: 使用WriteFile对象

中的Response
@Response.WriteFile(pathToMyHtmlFile)

取自here

答案 4 :(得分:2)

您可以在cshtml视图中使用它:

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

答案 5 :(得分:0)

只需使用ajax请求获取html文件即可将内容输出到主html中。由于它是一个html文件,它将在后续调用中缓存,不会对性能产生影响。

答案 6 :(得分:0)

一种完全不同的方式就是将文件加载到javascript中

<div id="loadId">
</div>

<script>
    $(document).ready(function () {
        $('#loadId').load('filepath');
    });
</script>

您可以根据需要在控制器中设置文件路径,或将其放入模型中,并使用:

$('#loadId').load('@ViewBag.filepath');