我的剃刀中有这条线:
@Html.Raw(File.ReadAllText(Server.MapPath("~/Views/Home/index.html")))
在HTML文件中,我有这个:
<li><a href="#">Personal Records</a></li>
在我的js文件中,我有这个:
if ($(link).text() === 'Personal Records') {
$("#govde").load("PersonalRecords.html");
}
但是当我点击该链接时,没有任何反应。当我直接从文件浏览器打开Index.html时,它可以工作。我该如何解决这个问题?
编辑:
在控制台中,它有:
http://localhost:12345/PersonalRecords.html 404 (Not Found)
我想我已将html文件放到错误的文件夹中。你能告诉我在哪里放置吗?感谢。
EDIT2:
我的JS中有这个:
var upperMenu = document.getElementById('upperMenu');
var requests = document.getElementById('requests');
$(upperMenu ).click(function (event) {
ustMenu.childNodes.forEach((myList) => {
$(myList).attr('class', ' ');
});
var link = event.target;
var list = link.parentNode;
$(myList).attr('class', 'active');
if ($(link).text() === 'Personal Records') {
$("#govde").load('@Url.Content("~/PersonalRecords.html")');
}
});
在这个(单独的)JS文件中创建了 .load
函数。
答案 0 :(得分:0)
问题始于$("#govde").load
方法中提到的文件名:
$("#govde").load("PersonalRecords.html");
此语句尝试加载假定存在于项目根目录中的“PersonalRecords.html”,但它返回404,因为目标文件存在于不同的目录中。
因此,首先应该提到加载HTML内容的完整绝对路径URL:
var url = '@Url.Content("~/Views/Home/PersonalRecords.html")';
然后,由于load
方法放在单独的JS文件中,将它们放在一起应该是这样的结果:
<强>剃刀强>
<script src="@Url.Content("~/[path_to_your_JS_file]")" type="text/javascript"></script>
<script>
var url = '@Url.Content("~/Views/Home/PersonalRecords.html")';
loadRequest(url);
</script>
JavaScript文件
function loadRequest(url) {
var upperMenu = $("#upperMenu").get(0);
var requests = $("#requests").get(0);
$(upperMenu).click(function (event) {
ustMenu.childNodes.forEach((myList) => {
$(myList).attr('class', ' ');
});
var link = event.target;
var list = link.parentNode;
$(myList).attr('class', 'active');
if ($(link).text() === 'Personal Records') {
$("#govde").load(url);
}
}
}
接下来,如上所述:
@Html.Raw(File.ReadAllText(Server.MapPath("~/Views/Home/index.html")))
我认为在视图端读取所有文件内容不是一个好习惯,因此我更喜欢使用FilePathResult
从控制器端返回文件内容,如@Guruprasad Rao所说:
// taken from /a/20871997 (Selman Genç)
[ChildActionOnly]
public ActionResult GetHtmlFile(String path)
{
// other stuff
// consider using Server.MapPath(path) if in doubt determining file path
return new FilePathResult(path, "text/html");
}
用作视图中的链接:
<li>@Html.ActionLink("HTML File", "GetHtmlFile", "Controller", new { path = "~/Views/Home/PersonalRecords.html" }, null)</li>
类似问题: