.NET服务器自定义控件

最近对自定义控件特着迷,从刚开始的模棱两可,到现在也能做些小控件了,个人感觉这个就是熟能生巧的活。

下面是我的一些总结(如果您是高手,请绕过):

刚接触自定义控件的时候根本就不知道怎么在页面显示控件,我这里根据个人实践总结了一些知识点:首先,开发一个自定义控件,并且能够生成成功,那么接下来就可以在Web页面上注册使用了:<%@ Register Assembly="myTestControl" TagPrefix="tt" Namespace="myTestControl" %>

解释一下:这里的Namespace属性很重要,这个是指控件的解决方案名称,Assembly是控件的AssemblyInfo.cs中[assembly: AssemblyProduct("myTestControl")]的属性值

在html中使用时:<tt:Control1 runat="server"></tt:Control1>,这里的Control1 是控件的名称,当然了,一个解决方案终中可能有多个控件,那么这个值就是你要使用的控件的名称。一切就OK 了,然后可以加上一些例如ID的属性等。

上面介绍的是控件的使用,具体的开发是个循序渐进的过程,刚开始的时候可以用下面的方法写:

View Code
 1         protected override void Render(HtmlTextWriter writer)
 2         {
 3             writer.Write("<table style='。。。。'>");
 4             writer.Write("<tr>");
 6             writer.Write("<td>");
 7             writer.Write("<select");
 8             writer.Write("<option value='0'>A</option>");
 9             writer.Write("<option value='1'>B</option>");
10             writer.Write("</select>");
11             writer.Write("</td>");
12             writer.Write("</tr>");
13             writer.Write("<tr>");
15             writer.Write("<td><input name='area' id='CreditCardNo' type='text' /></td>");
16             writer.Write("</tr>");
17             writer.Write("<tr>");
18             writer.Write("<td>" + 属性 + "</td>");
19             writer.Write("<td><input name='Name' id='NameID' type='text' /></td>");
20             writer.Write("</tr>");
21             writer.Write("<tr>");
23             writer.Write("</table>");

等熟悉了之后我们对代码进行了修改:

View Code
 1     writer.RenderBeginTag(HtmlTextWriterTag.Table);
 2         writer.RenderBeginTag(HtmlTextWriterTag.Tr);
 3              writer.RenderBeginTag(HtmlTextWriterTag.Td);
 4                 writer.Write("<strong>" + PaymentMethodText + "</strong>");
 5              writer.RenderEndTag();
 6              writer.RenderBeginTag(HtmlTextWriterTag.Td);
 7                 writer.AddAttribute(HtmlTextWriterAttribute.Name, "PaymentMethod");
 8                 writer.AddAttribute(HtmlTextWriterAttribute.Id, "PaymentMethod");
 9                 writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100%");
10                 writer.RenderBeginTag(HtmlTextWriterTag.Select);
11 
12                     writer.AddAttribute(HtmlTextWriterAttribute.Value, "0");
13                     writer.RenderBeginTag(HtmlTextWriterTag.Option);
14                         writer.Write("Visa");
15                     writer.RenderEndTag();
16 
17                     writer.AddAttribute(HtmlTextWriterAttribute.Value, "1");
18                     writer.RenderBeginTag(HtmlTextWriterTag.Option);
19                         writer.Write("MasterCard");
20                     writer.RenderEndTag();
21 
22                 writer.RenderEndTag();
23             writer.RenderEndTag();
24         writer.RenderEndTag();
25           writer.RenderBeginTag(HtmlTextWriterTag.Tr);
26             writer.RenderBeginTag(HtmlTextWriterTag.Td);
27                 writer.Write("<strong>" + CreditCardNoText + "</strong>");
28             writer.RenderEndTag();
29             writer.RenderBeginTag(HtmlTextWriterTag.Td);
30                   writer.AddAttribute(HtmlTextWriterAttribute.Name, "CreditCardNo");
31                   writer.AddAttribute(HtmlTextWriterAttribute.Id, "CreditCardNo");
32                   writer.AddAttribute(HtmlTextWriterAttribute.Type, "text");
33                   writer.RenderBeginTag(HtmlTextWriterTag.Input);
34                   writer.RenderEndTag();
35             writer.RenderEndTag();
36           writer.RenderEndTag();
37           writer.RenderBeginTag(HtmlTextWriterTag.Tr);
38             writer.RenderBeginTag(HtmlTextWriterTag.Td);
39                 writer.Write("<strong>" + CardholderNameText + "</strong>");
40             writer.RenderEndTag();
41             writer.RenderBeginTag(HtmlTextWriterTag.Td);
42                   writer.AddAttribute(HtmlTextWriterAttribute.Name, "CardholderName");
43                   writer.AddAttribute(HtmlTextWriterAttribute.Id, "CardholderName");
44                   writer.AddAttribute(HtmlTextWriterAttribute.Type, "text");
45                   writer.RenderBeginTag(HtmlTextWriterTag.Input);
46             writer.RenderEndTag();
47             writer.RenderEndTag();
48           writer.RenderEndTag();
49 
50           writer.RenderBeginTag(HtmlTextWriterTag.Tr);
51             writer.RenderBeginTag(HtmlTextWriterTag.Td);
52                 writer.Write("<strong>" + ExpirationDateText + "</strong>");
53             writer.RenderEndTag();
54             writer.RenderBeginTag(HtmlTextWriterTag.Td);
55                 writer.AddAttribute(HtmlTextWriterAttribute.Name, "Month");
56                 writer.AddAttribute(HtmlTextWriterAttribute.Id, "Month");
57                 writer.RenderBeginTag(HtmlTextWriterTag.Select);
58                       for (int day = 1; day < 13; day++)
59                       {
60                     writer.AddAttribute(HtmlTextWriterAttribute.Value, day.ToString());
61                     writer.RenderBeginTag(HtmlTextWriterTag.Option);
62 
63                         if (day < 10)
64                           writer.Write("0" + day.ToString());
65                         else
66                           writer.Write(day);
67 
68                     writer.RenderEndTag();
69                       }
70                    writer.RenderEndTag();
71                    writer.Write("&nbsp;");
72 
73                    writer.AddAttribute(HtmlTextWriterAttribute.Name, "Year");
74                    writer.AddAttribute(HtmlTextWriterAttribute.Id, "Year");
75                    writer.RenderBeginTag(HtmlTextWriterTag.Select);
76 
77                       for (int year = 2005; year < 2015; year++)
78                       {
79                     writer.AddAttribute(HtmlTextWriterAttribute.Value, year.ToString());
80                     writer.RenderBeginTag(HtmlTextWriterTag.Option);
81                     writer.Write(year);
82                     writer.RenderEndTag();
83                       }
84                    writer.RenderEndTag();
85             writer.RenderEndTag();
86           writer.RenderEndTag();
87 
88           writer.RenderBeginTag(HtmlTextWriterTag.Tr);
89               writer.AddAttribute(HtmlTextWriterAttribute.Align, "center");
90               writer.AddAttribute(HtmlTextWriterAttribute.Colspan, "2");
91               writer.RenderBeginTag(HtmlTextWriterTag.Td);
92                   writer.AddAttribute(HtmlTextWriterAttribute.Type, "submit");
93                   writer.AddAttribute(HtmlTextWriterAttribute.Value, SubmitButtonText);
94                   writer.RenderBeginTag(HtmlTextWriterTag.Input);
95                   writer.RenderEndTag();
96               writer.RenderEndTag();
97           writer.RenderEndTag();
98       writer.RenderEndTag();

 当然,还可以这样写:

View Code
 1         [Browsable(true)]
 2         [DefaultValue("区域")]
 3         [Category("")]
 4         [Description("set the area")]
 5         public string DropArea
 6         {
 7             get { return ViewState["_dropArea"] != null ? (string)ViewState["_dropArea"] : "区域"; }
 8             set { ViewState["_dropArea"] = value; }
 9         }
10         [Browsable(true)]
11         [DefaultValue("街道")]
12         [Category("")]
13         [Description("set the street")]
14         public string Street
15         {
16             get { return ViewState["_street"] != null ? (string)ViewState["_street"] : "街道"; }
17             set { ViewState["_street"]=value;}
18         }
19 
20         [Browsable(true)]
21         [DefaultValue("地址")]
22         [Category("")]
23         [Description("set the address")]
24         public string Address
25         {
26             get { return ViewState["_address"] != null ? (string)ViewState["_address"] : "地址"; }
27             set { ViewState["_address"] = value; }
28         }
29 
30         protected override void Render(HtmlTextWriter writer)
31         {
32             writer.RenderBeginTag(HtmlTextWriterTag.Table);
33             writer.RenderBeginTag(HtmlTextWriterTag.Tr);
34             writer.RenderBeginTag(HtmlTextWriterTag.Td);
35             writer.Write("详细地址");
36             writer.RenderEndTag();
37             writer.RenderBeginTag(HtmlTextWriterTag.Td);
38             writer.AddAttribute(HtmlTextWriterAttribute.Name, "area");
39             writer.AddAttribute(HtmlTextWriterAttribute.Id, "areaID");
40             writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "80px");
41             writer.RenderBeginTag(HtmlTextWriterTag.Select);
42             writer.AddAttribute(HtmlTextWriterAttribute.Value, "0");
43             writer.RenderBeginTag(HtmlTextWriterTag.Option);
44             writer.Write("天宁区");
45             writer.RenderEndTag();
46             writer.AddAttribute(HtmlTextWriterAttribute.Value, "1");
47             writer.RenderBeginTag(HtmlTextWriterTag.Option);
48             writer.Write("钟楼区");
49             writer.RenderEndTag();
50             writer.RenderEndTag();
51             writer.RenderEndTag();
52             writer.RenderBeginTag(HtmlTextWriterTag.Td);
53             writer.AddAttribute(HtmlTextWriterAttribute.Name, "area");
54             writer.AddAttribute(HtmlTextWriterAttribute.Id, "areaID");
55             writer.AddStyleAttribute(HtmlTextWriterStyle.Width, "100px");
56             writer.RenderBeginTag(HtmlTextWriterTag.Select);
57             writer.AddAttribute(HtmlTextWriterAttribute.Value, "0");
58             writer.RenderBeginTag(HtmlTextWriterTag.Option);
59             writer.Write("天宁区街道");
60             writer.RenderEndTag();
61             writer.AddAttribute(HtmlTextWriterAttribute.Value, "1");
62             writer.RenderBeginTag(HtmlTextWriterTag.Option);
63             writer.Write("钟楼区街道");
64             writer.RenderEndTag();
65             writer.RenderEndTag();
66             writer.RenderEndTag();
67             writer.RenderBeginTag(HtmlTextWriterTag.Td);
68             writer.AddAttribute(HtmlTextWriterAttribute.Name, "CardholderName");
69             writer.AddAttribute(HtmlTextWriterAttribute.Id, "CardholderName");
70             writer.AddAttribute(HtmlTextWriterAttribute.Type, "text");
71             writer.RenderBeginTag(HtmlTextWriterTag.Input);
72             writer.RenderEndTag();
73             writer.RenderEndTag();
74             writer.RenderEndTag();
75             writer.RenderEndTag();

生成解决方案后,就可以使用了。

原文地址:https://www.cnblogs.com/jsping/p/2652380.html