ASP.Net MVC Views(* .aspx)可以在多个ASP.net MVC项目中重用吗?

时间:2009-03-22 08:09:10

标签: asp.net-mvc

我想在多个ASP.Net MVC项目中重用* .aspx文件。这可能吗?

编辑:Anthony建议使用版本控制系统在多个项目中共享公共文件,以实用的方式解决了我的问题。幸运的是,因为我正在使用Subversion,所以解决方案适合我。但是,如果我没有使用它,这个问题怎么还能解决呢?

是否可以做这样的事情?

  1. 使用VS的网站预编译功能构建可再发行的用户控件。 (如here所述。)
  2. 在所需项目中引用输出程序集。
  3. 创建一个修改后的View引擎,通过泛型类型参数实例化用户控件。
  4. 然后我们构造这样的控制器动作:

    public ActionResult Shared()
    {
        return View<SharedPageOrUserControl>();
    }
    

    这看起来有可能吗?

2 个答案:

答案 0 :(得分:9)

您可以尝试的一个想法是:

  1. 为您的共享视图创建项目(类库)
  2. 在“属性”窗格
  3. 中添加并设置任何* .aspx标记页到Embedded Resources
  4. 添加一个继承自ActionResult的类“EmbeddedViewResult” - 这将包含逻辑,以确保在控制器操作结束时调用时,在磁盘上提取并提供嵌入的.aspx文件。
  5. 因此,在您希望使用共享视图的项目中,控制器操作可能会返回类似

    的内容
    public ActionResult Shared()
    {
        return new EmbeddedViewResult("SharedLib.SharedPage");
    }
    

    我在WebForms页面上做过类似的事情,所以它应该是可能的。

答案 1 :(得分:2)

我通常通过源代码控制来解决这类问题。大多数系统(甚至VSS)允许您跨多个项目共享文件。