我在 ControllerA 中有一个 View ,我想从该 View 中链接/链接到另一个 Controller (ControllerB) 中的 View ,并让该 View (ViewB) 在另一个浏览器选项卡中出现。我尝试了明显的方法..
从 View A..
<a href="/ControllerB/ActionB" target="_blank">SomeText</a>
ActionB 执行通常的 return View();
问题是当我单击链接时,会打开一个新选项卡,但出现此错误..
找不到资源。 描述:HTTP 404。您正在查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下 URL 并确保拼写正确。
请求的 URL:/ControllerB/ActionB
没明白。我可以100%保证该 Controller 存在于项目的Controllers/ControllerB目录中。
是的,我也尝试过这个..
<a href="@Url.Action("ActionB", "ControllerB")" target="_blank">SomeText</a>
但同样的问题。
(某种程度上)的工作原理是在 ViewA 中设置 href 来调用 jscript 函数 (href="javascript:function()")。该函数使用 jquery ajax 调用跳转到 ControllerB (使用与上面相同的 url),这实际上有效(它在调试器中的 return View() 处停止)。问题是,没有其他事情发生。没有打开新选项卡, View 也不会出现在任何地方。
我该怎么做/我做错了什么?
编辑:也尝试了同样的结果..
@Html.ActionLink("SignalR", "SRStart", "SignalR", null, new { target = "_blank" })
可能与路由有关?
编辑#2: 我以前见过这个版本的错误。根据我设置网址的方式,我会收到更详细的 404 错误,其中的详细信息包括此..
Requested URL http:// localhost:64528 /Home /~ /SignalR /SRStart
请注意,Home Controller (或目录 - 不确定)默认附加到我指定的导致错误的 url 前面。不知道为什么会发生这种情况,除了包含链接的 View 已脱离主 Controller (ControllerA)这一事实之外,但它正在发生,而且很痛苦。 所以我想现在的问题是 - 如何防止当前 Controller (主页)被附加到网址的前面?某处的某些应用程序设置?
最佳答案
这很有趣。当我发布我的操作方法时,我刚刚将属性从 [HttpPost] 更改为 [HttpGet],并不认为由于路径问题它会产生任何影响,但后来我再次运行它并且它起作用了。不会假装我理解为什么当我将 Post 作为属性时将 Home 附加到 url,但我猜这并不重要。所以它是附加到操作方法的属性。有趣的。谢谢大家..
关于javascript - MVC - 链接到另一个 Controller /操作时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30423186/