【问题标题】:asp.net mvc 3: deployment. getJson urls don't workasp.net mvc 3:部署。 getJson 网址不起作用
【发布时间】:2011-08-12 23:30:55
【问题描述】:

我有一个非常简单的 asp.net mvc3 应用程序,它使用 jquery::getJSON 调用我的控制器并通过 jquery::tmpl 获取一些数据顶部显示。

function ajaxError(jqXHR, textStatus, errorThrown) {
    alert(errorThrown);
}
....

    $.ajaxSetup({
        cache: false,
        error: ajaxError // tell me what the error was
    });

    var cl = $("#listcontainer");
    $(cl).empty();
    $.getJSON("/Home/GetSomeData", { oldData: "" }, function (data) {
        $.each(data, function (i, item) {
            var t = $("#listitem").tmpl(item);
            $(cl).append(t);
        });
    });

在 IIS express 下一切正常,但是当我在 win2k8 r2 上将应用程序部署到新设置的 iis7 时,getJSON 调用失败,并通过 ajaxError 函数显示错误“未找到”。 (否则实际应用运行正常)。

我实际上可以通过在浏览器中输入该操作来调用该操作 - http://webservername/myapp/Home/GetSomeData - 它会将 json 返回给我。

这是配置错误吗?还是我不应该这样做?

TIA。

【问题讨论】:

    标签: asp.net-mvc-3 getjson


    【解决方案1】:

    这里的问题是您的 URL 是硬编码的,并且不包含您正在使用的虚拟目录。

    您应该考虑使用 MVC 中内置的路由,而不是对 URL 进行硬编码。

    您可以使用UrlHelper的Action方法为您生成链接,例如:

    Url.Action("GetSomeData","Home")
    

    这样:

    $.getJSON(@Url.Action("GetSomeData","Home"),[...]
    

    【讨论】:

    • 非常感谢,工作顺利。 ps 我不确定谁对你投了反对票,如果是我,那是错误的点击。 tia。
    【解决方案2】:

    使用UrlHelper 在这两种情况下生成正确的 URL:

    Url.Action("GetSomeData", "Home")
    

    如果使用剃须刀,结果如下:

    $.getJSON("@Url.Action("GetSomeData", "Home")", { oldData: "" }, function (data) {
        $.each(data, function (i, item) {
            var t = $("#listitem").tmpl(item);
            $(cl).append(t);
        });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-25
      • 2011-03-23
      • 2012-01-22
      • 2016-10-04
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多