MVC - 无法链接到另一个Controller / Action

时间:2015-05-24 11:52:06

标签: javascript jquery ajax asp.net-mvc

我有一个视图,我称之为ControllerA,我想从中调用/链接到另一个控制器(ControllerB)中的视图,并让该视图(ViewB)出现在另一个浏览器选项卡中。我尝试了明显的方法..

来自ViewA ..

<a href="/ControllerB/ActionB" target="_blank">SomeText</a> 

ActionB通常返回View();

问题是,当我点击链接时,会打开一个新选项卡但是我收到此错误..

无法找到资源。 说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。请查看以下网址,确保拼写正确。

请求的网址:/ ControllerB / ActionB

不明白。我可以100%保证该控制器存在于项目的Controllers / ControllerB目录中。

是的我也尝试过这个..

<a href="@Url.Action("ActionB", "ControllerB")" target="_blank">SomeText</a>

但同样的问题。

(p)在ViewA中设置href来调用jscript函数(href =“javascript:function()”)。该函数使用jquery ajax调用来跳转到ControllerB(使用与上面相同的url),这实际上有效(它在调试器的返回View()上停止)。问题是,没有别的事情发生。没有打开新标签,视图也不会出现在任何地方。

我怎么能这样做/我做错了什么?

编辑也尝试使用相同的结果..

@Html.ActionLink("SignalR", "SRStart", "SignalR", null, new { target = "_blank" }) 

可能与路由有关吗?

编辑#2: 我以前见过这个版本的错误。根据我如何设置网址,我会得到更详细的404错误,其中的详细信息包括此内容。

  

请求的URL http:// localhost:64528 / Home /〜/ SignalR / SRStart

请注意,Home控制器(或目录 - 不确定)默认附加到我指定的url的前面,这是导致错误的原因。不知道为什么会发生这种情况,除了包含链接的视图离开Home控制器(ControllerA)这一事实,但它正在发生,这是一个痛苦的屁股。 所以我想现在的问题是 - 如何防止当前控制器(Home)被附加到网址的前面?某个应用程序设置在哪里?

1 个答案:

答案 0 :(得分:1)

well this is interesting. when i posted my action method, i had just changed the attribute from [HttpPost] to [HttpGet] not thinking it would make any difference because of the pathing issue but then i ran it again and it worked. not going to pretend i understand why Home was appended to the url when i had Post as the attribute but guess it doesn't matter. so it was the attribute attached to the action method. interesting. thanx all..