题
我正在考虑构建一些 Web 用户控件,着眼于重用,但我似乎无法在 VS2008 的类库中添加 Web 用户控件。有没有办法解决这个问题,或者有更好的方法来创建可重用的控件?
解决方案
您可以创建网络用户控件或网络自定义控件封装的功能需要。两个对照组之间的主要区别在于在便于创建与易用性的设计时间。
您也许应该考虑创建一个Web自定义控件库。有一个演练使用Web控件在创建一个Web自定义控件库模板。
根据MSDN文章“为Web用户控件的建议与Web自定义控件”这些是两种类型的对照之间的差异:
网络用户控件强>是很容易的, 但他们可以使用不太方便 在高级场景。您开发Web 用户控制几乎一模一样 你开发的Web方式窗体页。 像Web窗体,用户控件可 在可视化设计器创建的,他们 可以与代码分离被写入 从HTML,他们可以处理 执行事件。
然而,由于Web 用户控件动态编译 在运行时,它们不能被添加到 工具箱,和他们所代表 通过简单的占位符字形时 添加到页面。这使得Web用户 控制更难,如果你是使用 习惯了完整的Visual Studio .NET中 设计时支持,其中包括 属性窗口和设计视图 预览。
另外,只有这样才能共享 应用程序之间的用户控制 是把一个单独的副本中的每个 应用程序,这需要更多的 维护,如果你更改了 控制。
网络定制控件强>被编译代码, 这使得它们更容易使用,但 更难以创造;网站自定义 控制必须在代码中编写。 一旦你创建了控制, 但是,您可以将其添加到工具箱 并在可视化设计显示它 全属性窗口支持 和所有其他设计时功能 的ASP.NET服务器控件。
此外,可以安装一个单 在网络自定义控件的副本 全局程序集缓存和共享 应用程序之间的,这使得 维护更加方便。欲了解更多 信息,请参阅全局程序集缓存。
其他提示
请按照以下步骤操作(从 这个帖子 作者:菲尔·哈克德):
关闭 VS.NET 2005。
打开目录 C**:\Program Files\Microsoft Visual Studio 8\Web\WebNewFileItems\CSharp** (假设默认安装 VS.NET)。
打开 CSharpItems.vsdir 记事本中的文件。选择文本并将其复制到剪贴板。
现在打开文件 C:\Program Files\Microsoft Visual Studio 8\VC#\CSharpProjectItems\CSharpItems.vsdir 并将剪贴板的内容粘贴到现有文本下方。
- 现在复制内容 C:\Program Files\Microsoft Visual Studio 8\Web\WebNewFileItems\CSharp (不包括 CSharpItems.vsdir)进入文件夹 C:\Program Files\Microsoft Visual Studio 8\VC#\CSharpProjectItems.
现在,当您选择添加|时,“ Web用户控制”应该是一个选项。新物品。
参考: http://haacked.com/archive/2006/02/07/addingwebusercontroltoaclasslibraryinvs.net2005.aspx
由于普拉特的链接中提到,如果你打算重用那么Web用户控件不是很好。该ASCX文件必须手动复制到你想在使用它们每一个项目,或者你有破解周围的路。
这是更好地使用System.Web.UI.WebControls.WebControl这是当你添加一个“ASP.NET服务器控件”你会得到什么。这是专为重用。如果现有的框架控件来选择一个适合大部分的账单,你只需要扩展它的功能,然后添加一个“ASP.NET服务器控件”,并改变它从面板或菜单或任何继承。
如果你仍然决心要得到可重用的Web用户控制工作,那么的本文章由谷应该设置你在正确的道路上。
有一个名为“ASP.NET服务器控件”,我想你可以使用...一个项目模板
- larsw
您可以在类库中做任何事情。
- 添加对 System.Web 的引用
- 创建您的新控制类,该类从WebControl或HTMLControl或其他任何东西继承。
就是这样。您现在拥有了一个可重用的 ASP.NET 控件。
您可以做一些特殊的事情,例如向您的类和属性添加属性,但实际上并不需要它们。
[DefaultProperty("Text")]
[Category("...")]
[DefaultValue("")]
您可以使用虚拟路径提供,但你应该考虑是否真的值得你的诡计。考虑此 CodeProject上的文章关于这个问题。