在我看来,想要将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
虽然文件在那里。我应该采取不同的方式吗?
答案 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)
请按照以下步骤操作
答案 2 :(得分:5)
简单的答案是将main.html文件重命名为main.cshtml,Razor视图引擎会将其识别为渲染。
答案 3 :(得分:5)
答案 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');