显示来自不同控制器的视图[重复]

Posted

技术标签:

【中文标题】显示来自不同控制器的视图[重复]【英文标题】:Display view from different controller in action [duplicate] 【发布时间】:2014-04-11 18:02:05 【问题描述】:

我正在处理 Asp.NET MVC 3 应用程序中的一个页面。我在一个名为 Alarm 的控制器中有一个动作。该控制器称为调度。由于各种原因,我需要修改此操作,以便它在另一个名为 Read 的控制器的视图中显示其结果。此视图称为详细信息。

如何使警报操作返回该视图?我试过了

return View( "Read/Details", vm );

但显示此错误消息:

未找到视图“读取/详细信息”或其主视图,或者没有视图引擎支持搜索到的位置。搜索了以下位置: ~/Views/Dispatch/Read/Details.aspx ~/Views/Dispatch/Read/Details.ascx ~/Views/Shared/Read/Details.aspx ~/Views/Shared/Read/Details.ascx ~/Views/Dispatch/Read/Details.cshtml ~/Views/Dispatch/Read/Details.vbhtml ~/Views/Shared/Read/Details.cshtml ~/Views/Shared/Read/Details.vbhtml

这样做的正确方法是什么?

【问题讨论】:

【参考方案1】:

改用完整路径

return View("~/Views/Read/Details.cshtml", vm);

【讨论】:

【参考方案2】:

您可以重定向到另一个控制器上的操作:

return RedirectToAction("ActionName", "ControllerName", routeValues);

显然用适当的值替换动作和控制器名称,routeValues 将包含动作所需的任何参数。因此,如果您的 vm 变量只是一个整数 Id,您的代码将如下所示:

return RedirectToAction("ActionName", "ControllerName", new  id = 1234 );

进一步阅读: http://msdn.microsoft.com/en-us/library/system.web.mvc.controller.redirecttoaction(v=vs.118).aspx

【讨论】:

当 RedirectToAction 起作用时,它会更改 URL。我希望在当前 URL 上显示不同的视图。 Kalyan 的回答以及另一个问题中的回答都是这样做的。 啊,你是对的。我会在这里留下这个答案,以防其他人正在寻找这种行为。

以上是关于显示来自不同控制器的视图[重复]的主要内容,如果未能解决你的问题,请参考以下文章

当我尝试使用 segue 使按钮显示不同的视图控制器时,它会在顶部添加一个黑条 [重复]

如何从 Xcode 中的不同视图控制器禁用工具栏项目 [重复]

UiView背景颜色不同[重复]

来自故事板的表格视图单元原型未初始化子视图

Cocoa:根据来自 App Delegate 的输入加载不同的视图控制器

来自完成处理程序的 Swift 显示视图控制器