最近对自定义控件特着迷,从刚开始的模棱两可,到现在也能做些小控件了,个人感觉这个就是熟能生巧的活。
下面是我的一些总结(如果您是高手,请绕过):
刚接触自定义控件的时候根本就不知道怎么在页面显示控件,我这里根据个人实践总结了一些知识点:首先,开发一个自定义控件,并且能够生成成功,那么接下来就可以在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的属性等。
上面介绍的是控件的使用,具体的开发是个循序渐进的过程,刚开始的时候可以用下面的方法写:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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>");
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>");
等熟悉了之后我们对代码进行了修改:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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(" ");
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();
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(" ");
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();
当然,还可以这样写:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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();
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();
生成解决方案后,就可以使用了。