2011-05-27 63 views
1

如果从页面本地主机:nnnn /类我点击一个AJAX链接,将发布到'类/ AddClass'我得到一个RawUrl类/ AddClass,它工作得很好。MVC 3在AJAX后的控制器名称重复

如果从页面本地主机:nnnn /类/索引我点击相同的链接我得到一个RawUrl类/类/ AddClass和它(显然)不起作用。

我意识到我在路由地狱,但是谁在重写URL,为什么?我精心挑选了jQuery代码,并确实发布到了Class/AddClass。

感谢洞察力... 埃里克

回答

2

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

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

使用web.config中的相应条目。这消除了猜测工作。您还可以使用ResolveUrl

var url = '<%: ResolveUrl("/Class/AddClass") %>'; 
+0

感谢达斯汀...使用.post的$( '/班/ AddClass' ...)也可以正常工作。尽管我仍然对前面例子中复制控制器名称的人感到困惑。 – 2011-05-27 22:39:23

+0

哦,等等...我明白了!相对于当前URL的位置,意味着从类/索引到Class/AddClass的帖子会给出Class/Class/AddClass,就像它应该的那样。再次感谢。 – 2011-05-27 22:57:01