显示来自不同控制器的视图[重复]
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 中的不同视图控制器禁用工具栏项目 [重复]