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

本文关键字:控制器 视图 显示 | 更新日期: 2023-09-27 17:58:01

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

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

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

但显示了以下错误信息:

未找到视图"Read/Details"或其主视图,或者没有视图引擎支持搜索的位置。搜索了以下位置:~/Views/Dispatch/Read/Details.aspx~/Views/Shared/Read/Details.ascx~/VViews/Shared/Read/Details.ascx~/Vviews/Dispatch-Read/Details.cshtml~/Views/Dispatch/Read/Details.vbhtml~/Views/chared/Read/Details.cshtml ~/Views/sehared/Read/Details.vbhtml

做这件事的正确方法是什么?

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

使用完整路径代替

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

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

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