显示来自不同控制器的视图

时间:2014-04-11 18:02:06

标签: c# asp.net-mvc

我正在使用Asp.NET MVC 3应用程序中的页面。我在一个名为Alarm的控制器中有一个动作。该控制器称为Dispatch。由于各种原因,我需要修改此操作,以便在另一个名为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 〜/ Views / Dispatch / Read / Details.cshtml~ / Views / Dispatch / Read / Details.vbhtml~ / Views / Shared / Read / Details.cshtml~ / Views / Shared / Read / Details.vbhtml

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

2 个答案:

答案 0 :(得分:2)

改为使用完整路径

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

答案 1 :(得分: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