2011-04-20 69 views
0

我在位于以下地址的ASP.NET MVC页面differen't控制器的动作:ASP.NET MVC从JavaScript调用

http://somedomain/someapp/Foo/Bar?param=val

我有一个控制器和也酒吧控制器。我需要调用酒吧控制器的DoSomething的行动,并把它传递我已经在当前的URL的查询字符串中的参数:

http://somedomain/someapp/Bar/DoSomething?param=val

我不能只设置AJAX调用的URL为“ /酒吧/ DoSomething的”,因为这需要我到以下地址:

http://somedomain/Bar/DoSomething?param=val

我不能指定整个URL,因为这将取决于部署而变化。

我假设有一些方法可以使用MapRoutes来实现我想要的并传递数据。

回答

1

既然你已经有了带参数的URL,你可以这样做:

ResolveUrl("~/Bar/DoSomething?param=val"); 

这将定虚拟地址转换成绝对URL

1

至少有3种可能性:

1 - 你可以在JavaScript中的“全局”变量,你设置的Web应用程序基础的价值和替换“http://somedomain.com/someapp /”与变量:

var liveString = "http://" + window.location.host; 
if (liveString.indexOf('somedomain.com') > 0) { 
    liveString = liveString + '/someapp'; 
} else if (liveString .indexOf('localhost') > 0) { 
    liveString = liveString + '/localApp'; 
} 

你也可以有一个链接,哟获得url jQuery中:

<a id="link-id" href="<%Url.Action("ActionName", "ControllerName", new { param = val })%>" style="display:none;"></a> 

var myUrlCall = $('#link-id').href; 

您也可以在IIS 7中创建在根的应用使用其他端口或将其添加到您的主机文件中,以便您的url看起来像:htttp://someapp.local,我们使用最后一个选项,因为它是更好地表示实时应用程序的选项。

让我知道你是否需要更多的帮助!

+0

选项1是一个很好的上即 – 2012-05-14 17:40:57

0

退房Ajax.ActionLink 可以指定上成功要调用的控制器那里,和代码的名称,失效等

ASP.NET MVC 2