从外部文件调用Ajax .load函数

时间:2014-11-12 19:33:30

标签: jquery ajax partial-views

这对我来说是新的 - 我可能会错过一个基本的理解。

以下代码在我的.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."; 

谢谢!

1 个答案:

答案 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可以从中检索它