ASP.NET自定义控件
答
服务器控件应该被编译成一个DLL。应该没有理由害怕在项目中进行额外的组装,这有助于创建良好的项目组织。
ASP.NET服务器控件实际上是程序集中的自定义类。他们没有与他们关联的“ascx”标记文件。
要使用ASP.NET服务器控件,您需要告诉ASP.NET在哪里查找其类。
首先,创建一个类库项目并将其添加到您的解决方案,我会打电话给我的“CustomControls.dll”。
一旦出现,添加一个简单的类是你的三夏:
public class Hello : System.Web.UI.WebControl
{
public override Render(HtmlTextWriter writer)
{
writer.Write("Hello World");
base.Render(writer);
}
}
生成项目,并将其添加为您主要网络项目的引用。
现在,在您要使用该控件的ASPX页面,需要注册,所以将其添加为在ASPX第一行Page指令后:
<%@ Register TagPrefix="Example" Namespace="CustomControls" Assembly = "CustomControls" %>
现在,你应该有一个名为<的控件示例:您好,您可以使用>。在intellisense中显示可能需要一分钟。
答
为控件创建类并生成解决方案。如果一切顺利,控制器现在可以在工具箱上使用。
有时VS不更新工具箱。如果出现这种情况Register指令添加到页面:
<%@ Register Assembly="NAME_OF_THE_ASSEMBLY" Namespace="NAMESPACE_OF_THE_CUSTOM_CONTROL" TagPrefix="cc1" %>
然后只需在页面上使用控制:
<cc1:mycustompanel id="MyCustomPanel1" runat="server"><asp:TextBox id="TextBox1" runat="server"></asp:TextBox></cc1:mycustompanel>
答
如果你不想要一个* .ascx文件,你不想要一个单独的项目,并且你不想要一个* .dll文件,你认为剩下的是什么?代码必须在某个地方居住。
答
你提到你想避免创建一个单独的项目。正如其他答复所指出的那样,仅仅创建一个新项目来存储自定义控件并引用它就更为常见了。这是可能的,但是,登记在同一项目中定义的控制,使用常规语法:
<%@ Register TagPrefix="Example" Namespace="CustomControls" Assembly="CustomControls" %>
凡“集结号”是其中两个控制和页面所在的装配。如果您使用的是Web应用程序项目,而不是Web站点,这会更容易。
非常感谢!这不仅解决了我的问题,而且帮助我成为了一名开发人员。 – 2008-11-20 19:09:05