这对我来说是新的 - 我可能会错过一个基本的理解。
以下代码在我的.cshtml文件中完美运行,但在放入单独的.js文件时不起作用:
var url = '@Url.Action("partialView", "controllerName")';
var parameterName = getParameter();
$("#partial_view").load(url, { parameter: parameterName },
function (response, status, xhr) {
if (status == "error") {
errorCall();
}
});
我是否可以从单独的文件加载到html文档中?我知道像这样简单的东西可以从.js文件中运行:
document.getElementById("pageSpot").innerHTML = "This changes.";
谢谢!
答案 0 :(得分:1)
cshtml文件由ASP.NET运行时编译,它们是结果,作为对客户端的响应发送。
js文件是静态提供的,没有任何编译,因此客户端完全接收文本文件的内容。
这意味着你不能在js文件中使用Razor,因为编译它需要一个C#编译器,并且它需要在某个上下文中执行才能有意义。
脚本中唯一不在cshtml文件之外的部分就是这句话:
var url = '@Url.Action("partialView", "controllerName")';
你需要
(a)对URL值进行硬编码,例如: var url = '/controllerName/partialView';
或(b)在视图中执行Url.Action方法,并将结果存储在HTML中的某个位置,JavaScript可以从中检索它