2011-05-27 47 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