Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MVC 3在AJAX post中复制了控制器名称_Ajax_Asp.net Mvc 3_Asp.net Mvc Routing - Fatal编程技术网

MVC 3在AJAX post中复制了控制器名称

MVC 3在AJAX post中复制了控制器名称,ajax,asp.net-mvc-3,asp.net-mvc-routing,Ajax,Asp.net Mvc 3,Asp.net Mvc Routing,如果我在localhost:nnnn/Class页面上单击一个AJAX链接,该链接将发布到“Class/AddClass”,我会得到Class/AddClass的RawUrl,它工作得很好 如果我在localhost:nnnn/Class/Index页面上单击相同的链接,我会得到Class/Class/AddClass的RawUrl,它(显然)不起作用 我意识到我陷入了路由地狱,但谁在重写URL,为什么?我煞费苦心地浏览了jQuery代码,事实上它正在发布到Class/AddClass 谢谢你的

如果我在localhost:nnnn/Class页面上单击一个AJAX链接,该链接将发布到“Class/AddClass”,我会得到Class/AddClass的RawUrl,它工作得很好

如果我在localhost:nnnn/Class/Index页面上单击相同的链接,我会得到Class/Class/AddClass的RawUrl,它(显然)不起作用

我意识到我陷入了路由地狱,但谁在重写URL,为什么?我煞费苦心地浏览了jQuery代码,事实上它正在发布到Class/AddClass

谢谢你的洞察力。。。
Eric

问题不在于重写。您的AJAX请求是JavaScript,与ASP.NET路由引擎无关。当您使用
Class/AddClass
时,您将其设置为相对于当前URL的位置。您可以使用
/Class/AddClass
,它将解析为站点的根目录。如果您甚至在虚拟目录中,这就产生了一个问题。我更喜欢从配置文件中提取完整URL:

var url = '<%: ConfigurationManager.AppSettings["WebsiteURL"] %>/Class/AddClass';

谢谢达斯汀。。。使用$.post('/Class/AddClass'…)可以使它工作。虽然我仍然很困惑谁在复制上一个示例中的控制器名称。哦,等等。。。我明白了!相对于当前URL的位置,意味着从Class/Index到Class/AddClass的post会给出Class/Class/AddClass,这是应该的。再次感谢。
var url = '<%: ResolveUrl("/Class/AddClass") %>';