ASP.NET UserControl类库

Mik*_*ole 10 asp.net user-controls

是否可以创建包含UserControls的类库,以便重用它们?如果是这样,怎么样?标记是用.dll编译的吗?谢谢你的帮助!

Bob*_*Bob 9

您可以将UserControls和Pages 编译到类库中,因为最终,这是在您的网站及时编译之后发生的情况.这个过程有点牵扯,因为实际上UserControls和Pages并不适用于各种应用程序.

来自MSDN:

UserControl使您能够创建可在应用程序或组织中的多个位置使用的控件

http://msdn.microsoft.com/en-us/library/system.windows.forms.usercontrol.aspx

用于跨应用程序的控件的首选方法是创建自定义Web服务器控件.

如果你真的想坚持使用UserControls,获得此功能的基本过程如下:

  1. 创建一个新的Web应用程序项目.
  2. 开发可重复使用的UserControls.
  3. 将站点发布为不可更新的*站点.(取消选中允许此站点可更新)
  4. 将已编译的库从bin目录和ascx文件根据需要从发布的站点复制到新站点.

    • 不可更新选项是将标记带入程序集的原因.这是重要的一步.

是的,作为第四点状态,您需要复制ascx文件.标记将包含在类库中,ascx实际上将为空.没有办法避免这种情况(除非您使用自定义Web服务器控件),因为s通过其文件名UserControl添加到Pages.

所有这些都在MSDN上有更详细的记录,

http://msdn.microsoft.com/en-us/library/aa479564.aspx


egl*_*ius 6

更新:我提示使用预编译的用户控件,就像用户控件一样.

有关如何逐步执行操作,请参阅将.ascx用户控件转换为可再发行的自定义控件

在您将使用它的项目中不需要任何.ascx文件,因此这与您正在寻找的完全匹配.


用户控件不应跨站点重用,而是使用自定义服务器控件.

您可以使用现有控件组合服务器控件,并将其全部设置为可以通过css设置样式.

如果您仍在使用用户控制方法,请尝试Bob在答案中提到的内容.我没有使用用户控件,但我希望能够像使用自定义服务器控件一样使用该方法的输出.

<%@ Register TagPrefix="aspSample" Namespace="Samples.AspNet.CS.Controls"%>
...
<aspSample:WelcomeLabel Text="Hello" NameForAnonymousUser="Guest" 
   ID="WelcomeLabel1" runat="server" BackColor="Wheat" ForeColor="SaddleBrown" />
Run Code Online (Sandbox Code Playgroud)

PS.如果这不起作用,他提供的链接告诉你无论如何都要复制ascx文件,所以这不是你想要的那样,如果不坚持自定义服务器控件那么.