【问题标题】: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

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

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案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 的回答以及另一个问题中的回答都是这样做的。
      • 啊,你是对的。我会在这里留下这个答案,以防其他人正在寻找这种行为。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-19
      • 2021-08-09
      相关资源
      最近更新 更多