像ASP.NET WebControls一样,在dll中可重用的ASP.NET MVC组件

时间:2013-11-03 08:25:26

标签: asp.net asp.net-mvc dll

我有几个网站,这些网站共享几个组件。使用经典的ASP.NET WebControls ascx非常容易。我创建了几个这样的控件,放入一个dll库,我通过namespace.elements runat = server ...

从这些网站引用这些库。

但是在升级到ASP.NET MVC之后我不知道怎么做。我可以将模型和cotroller类放入dll中。

但是我应该如何将视图放入和重用dll?

如果我可以在不重新编译dll的情况下更改视图,我认为视图不会编译成dll。

编辑: 我宁愿选择一些比第三方更标准的解决方案。对我来说,最后一个解决方案是使用StringBuilder而不是ViewEngine。

1 个答案:

答案 0 :(得分:6)

我已经使用Razor Generator多年来在单独的.dll中存储可重用的MVC视图和帮助程序。

Razor Generator “是Visual Studio的自定义工具,允许在设计时而不是运行时处理Razor文件,允许将它们构建到程序集中,以便更简单地重用和分发。”

  

安装说明

     

它在VS扩展库中,所以安装   它从那里。它被称为“Razor Generator”(不要混淆   “用于MVC的Razor单文件生成器”)。

使用起来非常简单:

  

在MVC应用中使用

     
      
  1. 安装'RazorGenerator.Mvc'软件包,该软件包注册了一个特殊软件包   查看引擎
  2.   
  3. 转到MVC Razor视图的属性并将自定义工具设置为RazorGenerator
  4.   
  5. (可选)为“自定义工具命名空间”指定一个值,以指定生成的文件的命名空间。项目命名空间用于   默认值。
  6.   
  7. (可选)在Razor文件的第一行中指定其中一个生成器。生成器声明行如下所示:@ *   发电机:MvcHelper * @。如果你没有指定它,那么就是一个生成器   根据约定选择(例如,视图下的文件被视为   MvcViews)
  8.   
  9. 您将在.cshtml文件下看到生成的.cs文件,该文件将在运行时使用而不是.cshtml文件
  10.   
  11. 您还可以转到nuget程序包管理器控制台并运行“Enable-RazorGenerator”以在所有视图上启用自定义工具。
  12.   
  13. 要重新生成所有视图,请转到nuget包管理器控制台并运行“Redo-RazorGenerator”。这是   在更新生成器包时很有用,它需要   生成不同的代码。
  14.   

应该为类库选择MVC项目,以支持智能感知和其他有用的功能。

  

在视图库中使用

     

如果需要为预编译的MVC创建单独的库   视图,最好的方法是实际创建一个MVC项目   该库,而不是库项目。你永远不会真正跑步   它作为一个Mvc应用程序,但事实上,它配备了正确的一套   配置文件允许intellisense和其他东西工作很多   比在图书馆项目中更好。

     

然后,您可以从真实中添加对“MVC View项目”的引用   MVC app。

     

请注意,您需要安装“RazorGenerator.Mvc”包   进入图书馆,而不是主要的MVC应用程序。

Jess Chadwick写的

Programming ASP.NET MVC 4告诉我们

  

在ASP.NET Web窗体世界中,您可以通过创建用户来实现此目的   可以编译为独立的控件或自定义控件   组件。这些程序集可以跨项目分布,   从而使他们能够跨项目重用。

     

Web窗体视图   engine提供 ViewUserControl 类,可以利用它   为MVC框架创建这样的组件。 Razor视图引擎   但是,ASP.NET MVC并不提供开箱即用的任何此类方法。

并建议使用Razor Single File Generator视觉工作室扩展,另一个但类似于Razor Generator方法。