Asp.net MVC - 我可以从其他视图文件夹加载视图吗?

Cha*_*ell 22 asp.net-mvc

在我的应用程序中,我需要从两个不同的控制器加载相同的视图,而不将视图放在共享视图目录中.

基本上我有这个文件夹结构

  • 控制器
    • EventsController.cs
    • SearchController.cs
  • 查看
    • 活动
      • Preview.aspx
    • 搜索

基本上它与堆栈溢出时的情况大致相同.您可以在问题链接下预览一堆问题,但在搜索栏中进行搜索时,您也可以获得格式相同的页面.视图和视图模型大概相同.

由于我需要搜索的视图与事件所需的视图完全相同,因此我想重用相同的视图.但是,我想避免使用此特定视图的共享目录.

所以我的两部分问题是---

  1. 这是可能的,如果是这样的话怎么样?
  2. 这是不好的做法吗?

Eri*_*sch 34

是的你可以.简单return View("~/Views/Events/Preview.aspx").

但是,出于多种原因,我会建议不要这样做.最大的问题是,对于任何试图稍后修改代码的人来说,这都是不明显的(甚至可能是你),并可能导致潜在的错误.

更好的方法可能是创建"共享"视图或共享局部视图.我的偏好是共享局部视图,然后在非共享视图中呈现所需的局部视图功能.