使用jquery post for mvc 3在部署时无法正常工作

Lan*_*usT 10 asp.net-mvc jquery

所以我有这个MVC 3应用程序有一个下拉列表,我用来通过jquery填充div.它在本地工作正常,但当我将其部署到服务器时,它的重定向不正确.这是我的jquery:

$("#ddlCategoryMain").change(function () {
    $.post("/Home/Category/", { mileID: $(this).val() }, function (data) {
        refreshDiv($("div#main"), data);
    });
});

function refreshDiv(select, data) {
    select.html("");
    select.append(data);
}
Run Code Online (Sandbox Code Playgroud)

本地这个工作正常.但是当部署到我的服务器时,它似乎正在寻找http:// myserver/Home/Category而不是http:// myserver/mywebsite/Home/Category

我可以通过简单地在jquery函数中的/ Home/Category之前添加我的应用程序的名称来修复它,但这感觉不对...

我也尝试在/ Home之前添加../,〜/,../.. /但这没有任何区别.

解决这个小问题的任何方法?谢谢!

Mar*_*man 13

选项1

假设您的jQuery方法在您的视图中,您可以使用 Url.Action()

使用指定的操作名称和控制器名称为操作方法生成完全限定的URL.

$("#ddlCategoryMain").change(function () {
    $.post('<%=Url.Action("Category", "Home")%>', { mileID: $(this).val() }, function (data) {
        refreshDiv($("#main"), data);
    });
});
Run Code Online (Sandbox Code Playgroud)

或者,如果你使用剃须刀

$("#ddlCategoryMain").change(function () {
    $.post('@Url.Action("Category", "Home")', { mileID: $(this).val() }, function (data) {
        refreshDiv($("#main"), data);
    });
});
Run Code Online (Sandbox Code Playgroud)

选项2

如果方法位于外部js文件中,则可以在视图中声明全局变量.

var myUrl = '@Url.Action("Category", "Home")';
Run Code Online (Sandbox Code Playgroud)

然后在你的 $.post

$("#ddlCategoryMain").change(function () {
    $.post(myUrl , { mileID: $(this).val() }, function (data) {
        refreshDiv($("#main"), data);
    });
});
Run Code Online (Sandbox Code Playgroud)