是否可以将Web用户控件添加到类库?

时间:2008-12-29 20:11:52

标签: asp.net web-controls

我正在考虑构建一些Web用户控件,着眼于重用,但我似乎无法在VS2008的类库中添加Web用户控件。有没有办法解决这个问题,还是有更好的方法来创建可重用的控件?

6 个答案:

答案 0 :(得分:5)

您可以创建封装所需功能的 Web用户控件 Web自定义控件。两个控件之间的主要区别在于易于创建与易于在设计时使用。

您应该考虑创建一个Web自定义控件库。有walkthrough for creating a web custom control using the Web Control Library template

根据MSDN文章“Recommendations for Web User Controls vs. Web Custom Controls”,这两种控件之间存在差异:

  

Web用户控件很容易制作,   但它们使用起来不太方便   在高级方案中。你开发Web   用户控件几乎完全相同   您开发Web窗体页面的方式。   与Web窗体一样,用户控件也可以   他们在视觉设计师中创造   可以用代码分隔编写   从HTML,他们可以处理   执行事件。

     

然而,因为Web   用户控件是动态编译的   在运行时,他们无法添加到   工具箱,他们代表   通过一个简单的占位符字形时   添加到页面。这使得Web用户   如果你有更难控制的控制   习惯于完整的Visual Studio .NET   设计时支持,包括   属性窗口和设计视图   预览。

     

另外,分享的唯一方法   应用程序之间的用户控制   是在每个单独的副本   应用程序,需要更多   维护,如果您更改   控制。

     

Web自定义控件是已编译的代码,   这使它们更容易使用但是   更难创造;网络定制   控件必须在代码中创作。   一旦你创建了控件,   但是,您可以将其添加到工具箱中   并将其显示在视觉设计师中   完整的属性窗口支持   以及所有其他设计时功能   ASP.NET服务器控件。

     

另外,您可以安装一个   中的Web自定义控件的副本   全局程序集缓存并共享它   在应用程序之间,这使得   维护更容易。更多   信息见全局汇编缓存。

答案 1 :(得分:2)

按照以下步骤(来自Phil Haacked的this post):

  1. 关闭VS.NET 2005。

  2. 打开目录C **:\ Program Files \ Microsoft Visual Studio 8 \ Web \ WebNewFileItems \ CSharp **(假设是VS.NET的默认安装)。

  3. 在记事本中打开 CSharpItems.vsdir 文件。选择文本并将其复制到剪贴板。

  4. 现在打开文件 C:\ Program Files \ Microsoft Visual Studio 8 \ VC#\ CSharpProjectItems \ CSharpItems.vsdir ,并将剪贴板的内容粘贴到现有文本下面。< / p>

  5. 现在将 C:\ Program Files \ Microsoft Visual Studio 8 \ Web \ WebNewFileItems \ CSharp (不包括CSharpItems.vsdir)的内容复制到 C:\ Program Files \ Microsoft文件夹中Visual Studio 8 \ VC#\ CSharpProjectItems
  6. 现在,当您选择添加|时,“Web用户控制”应该是一个选项新物品。

    参考:http://haacked.com/archive/2006/02/07/addingwebusercontroltoaclasslibraryinvs.net2005.aspx

答案 2 :(得分:1)

正如普拉特的链接所提到的,如果您要重用,那么Web用户控件就不是很好。必须手动将ascx文件复制到您想要使用它们的每个项目中,否则您必须解决这个问题。

最好使用System.Web.UI.WebControls.WebControl,这是您在添加“ASP.NET服务器控件”时获得的内容。这些是为重用而设计的。如果其中一个现有的框架控件大部分都符合要求而您只需要扩展它的功能,那么添加一个“ASP.NET服务器控件”并将其更改为继承自Panel或Menu或其他任何内容。

如果您仍然决定让可重用的Web用户控件工作,那么this article by The Gu应该让您走上正确的道路。

答案 3 :(得分:0)

有一个名为“ASP.NET服务器控件”的项目模板,我假设您可以使用...

- larsw

答案 4 :(得分:0)

您可以在课程库中执行任何操作。

  1. 添加对System.Web的引用
  2. 创建继承的新Control类 来自WebControl或HtmlControl或 不管。
  3. 就是这样。您现在拥有ASP.NET的可重用控件。

    你可以做一些特别的事情,比如为你的类和属性添加属性,但实际上并不需要它们。

    [DefaultProperty("Text")]
    [Category("...")]
    [DefaultValue("")]
    

答案 5 :(得分:0)

您可以使用虚拟路径提供程序,但是您应该考虑它是否值得您的诡计。考虑这个问题的codeproject article