我认为我在JQuery和ASP.NET MVC中发现了一些非常奇怪的东西。
如this question中所述,我有以下JQuery代码:
$(function() {
$("#username").click(function() {
$.getJSON("ViewRecord/GetSoftwareChoice", {username:'123'},
function(data) {
alert(data);
});
});
});
ViewRecord
是控制器,GetSoftwareChoice
是操作方法。但为此生成的URl是
http://localhost/ViewRecord/ViewRecord/GetSoftwareChoice?username=123
相当惊人,不是吗?
为什么会这样?
这是我的路线:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = "" } // Parameter defaults
);
答案 0 :(得分:9)
没有前导斜杠,URL的路径是本地路径,它是相对于页面路径解析的。就像您可能放入HTML中的任何其他URL一样。
答案 1 :(得分:4)
尝试将此作为您的网址:
$.getJSON("/ViewRecord/GetSoftwareChoice", // etc
注意带前缀的正斜杠。
答案 2 :(得分:0)
jQuery对MVC,控制器或操作一无所知。你告诉它:“这是一个相对的URL - 获取当前页面的URL并将相对URL附加到它。”你可能想说:
var newURL = "http://" + document.domain + "/ViewRecord/GetSoftwareChoice";