2014-04-11 31 views
1

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

如何让Alarm操作返回该视图?我试图

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 〜/查看/调度/读/ Details.cshtml〜/查看/调度/读/ Details.vbhtml〜/查看/共享/读/ Details.cshtml〜/查看/共享/读/ Details.vbhtml

什么是正确的方法来做到这一点?

回答

2

使用完整的路径,而不是

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

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

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

+0

虽然RedirectToAction作品,它会更改URL。我想要显示不同的视图,但在当前的URL。 Kalyan的回答,以及另一个问题中的答案都是这样做的。 –

+0

啊,你说得对。我会在这里留下这个答案,以防其他人正在寻找这种行为。 –

相关问题