繁体   English   中英

ASP.NET Web 用户控件库

[英]ASP.NET Web User Control Library

我们有一堆用户控件,我们想从 Web 应用程序中提取出来并放入单独的程序集/库中,我认为这就像创建一个类库并将 ascx 和 ascx.cs 文件拉入项目一样简单,并编译一个 DLL 以便在我们的应用程序中重用。

然而,情况并非如此。

我们的最终目标是拥有一个单独的可分发 DLL(类似于 Telerik 分发其控件的方式),我们可以将其放入任何 Web 应用程序中。 此处的步骤:将 .ascx 用户控件转换为可再分发的自定义控件非常容易遵循,但是这会导致许多名为 controlname.ascx.guid.dll 的文件,这不是预期的结果。 我什至无法让这些工作无论如何,因为我们有额外的类需要编译到程序集中。

有没有人在 .NET 中成功创建了一个 web 用户控件库(我们在这里使用 3.5)? 我似乎找不到一个很好的分步指南。

我意识到这是一个古老的话题,但如果有人正在寻找创建可重用用户控件库的解决方案,结果证明它相当简单。 这里有两个很好的分步指南以及源代码:

来自 MSDN:将 .ascx 用户控件转变为可再发行的自定义控件

来自代码项目:创建 ASP.NET 用户控件库的直接方法

第二个链接为第一个链接创建的多个 dll 提供了解决方案。

编辑-(2)似乎是一个死链接。 这是新链接

https://www.codeproject.com/Articles/30247/Straight-way-to-create-ASP-NET-user-controls-libra

如果您想在项目之间共享控件,我的经验表明最好的方法是构建自定义 asp.net 服务器控件而不是用户控件。 用户控件适合在同一个项目中共享,但不适用于多个项目。

为此,我建议您在类库中构建一组自定义服务器控件,并在您的所有项目中使用它。

这本书很好地解释了创建服务器控件的基础知识

编辑:
我目前正在开发一个 .net Web 服务器控件库。 我实际上没有遵循任何分步指南。 我主要考虑使用我上面提到的这本书和 MSDN library + Reflector,这是一个很好的工具,用于检查现有的 MS 服务器控件并从中学习。

我找到了教程创建和使用用户控件库,但它看起来有点像黑客,因为它依赖于构建后命令行事件将用户控件从一个项目复制到另一个项目。

有点晚了,我承认。

创建可重用的用户控件库; 创建一个新的 Web 应用程序项目,删除所有脚手架,添加(多个)用户控件。 从 Web 应用程序项目创建一个 Web 部署项目,在 WDP 属性中选择选项合并所有控件输出并为库分配一个名称,并确保未选中允许此网站可更新。

构建 WDP 并使用 Reflector 检查生成的库; 您将看到它包含一个 ASP 命名空间,并且您精心制作的类型已被重命名,即 usercontrol_ascx。 在您的目标网站中,添加对 WDP 输出 dll 的引用,使用命名空间 ASP 和您在 WDP 中定义的程序集名称将 system.web/pages/controls 节点添加到 web.config。

现在,当您在页面中使用库时(例如),您必须使用您在 web.config 中定义的别名和在 Reflector 中看到的类型名,即

<ucl:usercontrol_ascx ... />

我发现在 WDP 上为网站添加依赖项很有用,以便 WDP 在网站之前构建; 现在我可以更改 WAP 中的用户控件,而不必记住在构建网站之前构建 WAP。

我希望有人觉得这很有用,因为我花了一些白发才到这个阶段并且仍然让 VS 做它“自动”的事情。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM