我正在寻找有关在 Asp.net 3.5 中创建自定义控件的说明或演练的链接。
我已经看过以下内容:
http://forums.asp.net/t/1385382.aspx : 将 .ascx 用户控件转换为可再发行的自定义控件 asp.net 3.5
http://msdn.microsoft.com/en-us/library/aa479318.aspx : 将 .ascx 用户控件转换为可再发行的自定义控件 asp.net 2.0
我认为上面的两个链接是针对复合自定义控件的,目前还可以,因为看起来制作复合控件比制作完整的自定义控件更容易。
按照上述链接 (aa479318) 中的说明,我创建了一个用户控件 MyControl.ascx 文件并将其发布,该文件被编译成一个自包含的 .dll,名为 App_Web_MyControl.ascx.cdcab7d2。
然后我放一个
<%Register Assembly="App_Web_MyControl.ascx.cdcab7d2"
TagPrefix="cc" namespace="TheNamespace" %>
在我想使用自定义控件的 aspx 文件(在另一个应用程序中)中,我在项目中添加了对 .dll 程序集的引用。
当我尝试通过
在 .aspx 代码中创建它时,无法识别 CustomControl 名称<cc:MyControl ID="idname" runat="server" />
我收到错误元素“MyControl”不是已知元素。
最佳答案
这已经晚了,我知道,但是这里..
通过执行此操作,我成功地将 .ascx UserControl 转换为可再分发的 dll:
- 创建了一个名为 AscxDll 的 ASP.NET 网站 项目
- 在该位置的所述项目中开发了我的 UserControl: ~/App_UserControls/RadioButtonQuestion.ascx。
发布网站项目时仅在“发布网站”对话框中勾选了这些设置:
使用固定名称和单页程序集
发出调试信息
- 打开 VS cmd 提示符并运行: aspnet_merge "C:\PrecompiledWebOutputDir\AscxDll"-o AssemblyName -r
- 将合并的 AssemblyName.dll 复制到另一个需要它的 Web 应用程序/网站项目的 bin 文件夹中。
- 在客户端项目的 web.config 中,将其添加到 pages\controls
- 在客户端项目中添加了对网页的控制:
请注意它是如何使用 namespace="ASP" 在 web.config 中注册的,以及网页上的标记如何在其中包含一些下划线
这对我来说效果很好,尽管我花了很长时间才弄明白。除非您的 UI 非常复杂,否则仅构建服务器控件或复合控件可能更容易。
希望这对某人有帮助。
关于asp.net - 需要帮助创建自定义控件 Asp.Net 3.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1981925/