2012-05-13 121 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。 –

相关问题