Asp.net mvc ASP.Net MVC视图(*.aspx)能否在多个ASP.Net MVC项目中重用?

Asp.net mvc ASP.Net MVC视图(*.aspx)能否在多个ASP.Net MVC项目中重用?,asp.net-mvc,Asp.net Mvc,我想在多个ASP.Net MVC项目中重用*.aspx文件。这可能吗 编辑:Anthony建议使用版本控制系统在多个项目中共享公共文件,这以一种实用的方式解决了我的问题。幸运的是,因为我使用的是Subversion,所以这个解决方案适合我。然而,如果我没有使用一个,这个问题怎么能解决呢 有可能这样做吗 使用VS的网站预编译功能构建可再发行的用户控件。(如上所述。) 参考所需项目中的输出程序集 创建修改后的视图引擎,该引擎通过泛型类型参数实例化用户控件 然后,我们构建如下控制器操作: public

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

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

有可能这样做吗

  • 使用VS的网站预编译功能构建可再发行的用户控件。(如上所述。)
  • 参考所需项目中的输出程序集
  • 创建修改后的视图引擎,该引擎通过泛型类型参数实例化用户控件
  • 然后,我们构建如下控制器操作:

    public ActionResult Shared()
    {
        return View<SharedPageOrUserControl>();
    }
    
    public ActionResult Shared()
    {
    返回视图();
    }
    

    这看起来可能吗?

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

  • 为共享视图创建项目(类库)
  • 在“属性”窗格中添加任何*.aspx标记页并将其设置为
  • 添加一个继承自ActionResult的类“EmbeddedViewResult”-该类将包含逻辑,以确保在控制器操作结束时调用embedded.aspx文件时,该文件被提取并在磁盘上可用
  • 因此,在您希望使用共享视图的项目中,控制器操作可以返回如下内容

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

    我在WebForms页面上做过类似的工作,所以这应该是可能的。

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

    是的,我可能也会这样做——但Sat night是建筑师宇航员出去玩的时候了+1由于我正在使用Subversion,我想我可以从公共存储库路径将*.aspx签出到需要它们的每个项目中。这是一个巧妙的解决方案。我想我应该为我的图形、css和js文件这样做。谢谢-1.共享是SCM的一种反模式。(对其中一个副本进行签入会使您的文件处于不一致的状态,直到您记得执行更新副本的操作为止)。@Richard:我不理解您的推理,签入任何文件时都会出现相同的情况。这是一种简单有效的方法。谢谢你的建议。我尝试过使用这个解决方案,但遇到了两个问题:1.)类库项目似乎不喜欢*.aspx文件(在“添加新项”对话框中丢失),2.)嵌入的*.aspx文件似乎不容易编辑。“添加新项”对话框是上下文敏感的;它不建议使用.aspx文件,因为这些文件在类库项目中没有通常的相关性。但这并不意味着类库项目不能包含它们;您必须添加一个文本文件并重命名它。在这种情况下处理嵌入式资源是一个巨大的痛苦(到处重建)!我曾使用这种技术来打包共享的管理页面,这一点都不好玩,但在许多应用程序中使用它时,它得到了回报。