所以我有这个 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);
}
在本地这工作得很好。但是当部署到我的服务器时,它似乎正在寻找 http://myserver/Home/Category而不是http://myserver/mywebsite/Home/Category
我可以通过简单地在 jquery 函数中的/Home/Category 之前添加应用程序的名称来修复它,但这感觉不对......
我还尝试在/Home 之前添加 ../、~/、../../,但这没有什么区别。
这个小问题有解决办法吗? 谢谢!
最佳答案
选项 1
假设您的 jQuery 方法在您的 View 中,您可以使用 Url.Action()
Generates a fully qualified URL to an action method by using the specified action name and controller name.
$("#ddlCategoryMain").change(function () {
$.post('<%=Url.Action("Category", "Home")%>', { mileID: $(this).val() }, function (data) {
refreshDiv($("#main"), data);
});
});
如果您使用 Razor ,则可以这样
$("#ddlCategoryMain").change(function () {
$.post('@Url.Action("Category", "Home")', { mileID: $(this).val() }, function (data) {
refreshDiv($("#main"), data);
});
});
选项 2
如果该方法位于外部 js 文件中,您可以在 View 中声明一个全局变量。
var myUrl = '@Url.Action("Category", "Home")';
然后在你的$.post
$("#ddlCategoryMain").change(function () {
$.post(myUrl , { mileID: $(this).val() }, function (data) {
refreshDiv($("#main"), data);
});
});
关于jquery - 使用 jquery post for mvc 3 在部署时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5251992/