我有一个视图,我称之为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)被附加到网址的前面?某个应用程序设置在哪里?
答案 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..