2012-05-13 124 views
1

我應該使用什麼url語法來確保控制器操作在jQuery ajax調用中正確解析?例如,下面的語法來調用方法一對HomeController的工作在Visual Studio中運行的網站,而:從單獨的javascript文件調用ASP.NET MVC控制器動作

$.ajax({ 
      type: 'GET', 
      url: "Home/Method1?lparam1=" + 1+ "&param2=" + 2, // my problem 
      dataType: 'json', 
      cache: false,    
      success: function(){ alert("success");} 
     }); 

但是,當我在IIS上部署網站,我收到HTTP 404告訴我,控制器動作不能得到解決。

TIA。

回答

1

我先給MVC生成的鏈接給你:

url: '@Url.Action("Method1", "Home")?lparam1=' + encodeURIComponent(1) + ... 

如果你在一個外部文件JS,你可以設置在你的網頁的URL的全局變量,並讓外部文件中讀取。另外,如果您的VS和IIS網址不同,您可以在項目屬性中爲您的站點提供一個虛擬目錄名稱,以便它與您的IIS目錄匹配,或者更好,但只需讓您的項目使用IIS而不是Cassini在網絡服務器)。

+0

是的,我的腳本,因此外部的我的問題。當我查看被請求的url時,它是localhost/home/method1,但在IIS下,我正在部署到localhost/mysite,因此url應該是localhost/mysite/home/method1。將虛擬路徑設置爲mysite /在propject屬性中會使VS url與IIS相同,但不能解決原始問題。我可能最終會嵌入腳本並在一天內調用它。 –

+0

看起來像globals是唯一的方法,因爲我希望將腳本保存在外部文件中。 –

+0

我想你可以通過將所有的邏輯包裝到一個JavaScript「類」中來清除這個方法,然後當你實例化它(在你的頁面中)時,傳入控制器URL作爲選項。 –

0

URL行就變成:

url: "/Home/Method1?lparam1=" + 1+ "&param2=" + 2, 
+1

此語法在外部文件中不適用於Javascript。 –

相關問題