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

时间:2010-12-29 04:09:05

标签: asp.net-mvc

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

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:34)

是的,你可以。只需return View("~/Views/Events/Preview.aspx")

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

更好的方法可能是创建“共享”视图或共享部分视图。我的偏好是共享的局部视图,然后在非共享视图中呈现您想要的部分视图功能。

答案 1 :(得分:1)

  1. 这是可能的。
  2. 我不确定您是否使用强类型视图。但是假设它是,那么对我来说,你有事件搜索&使用相同的视图模型搜索。可能用两种不同的视图模型将它们分开,视图会更好恕我直言。此外,如果你指定要在控制器中加载的视图的名称,它在某种程度上被认为是耦合视图和控制器,它肯定不是一个好主意。