using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
//自定义web服务器div控件
namespace MyControls
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:MyDiv runat=server></{0}:MyDiv>")]
[ParseChildren(true,"Students")]
public class MyDiv : WebControl
{
//第一种方式
//private List<Student> _student;
//[PersistenceMode(PersistenceMode.InnerDefaultProperty)] //默认集合
//public List<Student> Students {
// get {
// if (_student == null) {
// _student = new List<Student>();
// }
// return _student;
// }
// set {
// _student = value;
// }
//}
//第二种方式
[PersistenceMode(PersistenceMode.InnerDefaultProperty)] //默认集合
public List<Student> Students
{
get
{
if (ViewState["Students"] == null)
{
ViewState["Students"] = new Size();
}
return (List<Student>)ViewState["Students"];
}
set
{
ViewState["Students"] = value;
}
}
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]//以内容的形式打印
public Size Size {
get {
if (ViewState["Size"] == null) {
ViewState["Size"]= new Size();
}
return (Size)ViewState["Size"];
}
set {
ViewState["Size"] = value;
}
}
protected override HtmlTextWriterTag TagKey
{
get
{
return HtmlTextWriterTag.Div;//层标签
}
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
}
public override void RenderBeginTag(HtmlTextWriter writer)
{
this.Style.Add("Width", Size.Width + "px");//增加样式
this.Style.Add("Height", Size.Height + "px");
this.Style.Add("border","1px solid red");
base.RenderBeginTag(writer);
}
protected override void RenderContents(HtmlTextWriter writer)
{
//打印层内容
foreach (Student stu in Students) {
writer.Write("<p>姓名:"+stu.Name+"年龄:"+stu.Age+"性别:"+stu.Sex+"</p>");
}
base.RenderContents(writer);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//子标签-自定义服务器Div控件的子标签
namespace MyControls
{
public class Student
{
public string Name { set; get; }
public string Sex { set; get; }
public int Age { set; get; }
public Student() { }
public Student(string name, string sex, int age) {
this.Age = age;
this.Name = name;
this.Sex = sex;
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//<cc1:MyButton ID="MyButton1" Size-Height="30" Size-Width="290" OnClick="btnSubmit" Text="我是一个单独的提交按钮(自定义服务器)" runat="server" />用于这种内部属性
//定义一个大小的类,里面包含了宽高
namespace MyControls
{
public class Size
{
public int Width { set; get; }
public int Height { set; get; }
public Size(int width,int height) {
this.Width = width;
this.Height = height;
}
public Size() : this(100,100) { }
}
}