MVC – 无法链接到另一个Controller / Action
我有一个我称之为ControllerA的视图,我想从中调用/链接到另一个控制器(ControllerB)中的视图,并让该视图(ViewB)出现在另一个浏览器选项卡中。 我尝试了明显的方法..
来自ViewA ..
SomeText
ActionB通常返回View();
问题是当我点击链接时,会打开一个新选项卡,但是我收到此错误..
无法找到该资源。 说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用。 请查看以下url,并确保拼写正确。
请求的URL:/ ControllerB / ActionB
不明白 我可以100%保证该控制器存在于项目的Controllers / ControllerB目录中。
是的我也尝试过这个..
SomeText
但同样的问题。
虽然在某种程度上工作,但在ViewA中设置href以调用jscript函数(href =“javascript:function()”)。 该函数使用jquery ajax调用跳转到ControllerB(使用与上面相同的url),这实际上有效(它在调试器中的返回View()上停止)。 问题是,没有别的事情发生。 没有打开新选项卡,视图不会出现在任何地方。
我怎么能这样做/我做错了什么?
编辑:也尝试了相同的结果..
@Html.ActionLink("SignalR", "SRStart", "SignalR", null, new { target = "_blank" })
可能与路由有关吗?
编辑#2:我之前看过这个版本的错误。 根据我如何设置url,我会得到更详细的404错误,其中的细节包括此…
请求的URL http:// localhost:64528 / Home /〜/ SignalR / SRStart
请注意,Home控制器(或目录 – 不确定)默认附加到我指定的url的前面,这是导致错误的原因。 不知道为什么会发生这种情况,除了包含链接的视图不在Home控制器(ControllerA)之外的事实,但它正在发生,这是一个痛苦的屁股。 所以我想现在的问题是 – 如何防止当前控制器(Home)被附加到url的前面? 一些应用程序设置在某处?
这很有趣。 当我发布我的动作方法时,我刚刚将[HttpPost]中的属性更改为[HttpGet]而不认为它会因为路径问题而有所不同,但之后我再次运行它并且它有效。 我不会假装我理解为什么Home将Post作为属性附加到url但是猜它没关系。 所以它是附加到action方法的属性。 有趣。 thanx all ..