视图状态属性和设计期元数据attribute
视图状态属性:
Http是无状态的协议,视图状态是在单个页面中保存信息的第一选择。
ASP.net Web控件也使用试图状态在回发间保存属性值。
通过页面内建的 ViewState 属性,你可以把自己的数据放入到视图状态集合中,可以保存的信息类型包括简单数据类型和自定义对象。
using System; using System.Web; using System.Web.UI; namespace ControlLibrary { public class ViewStateControl:Control { private string _name; public string Name { get { return _name; } set { _name = value; } } public virtual string StateName { get { String s = (String)ViewState["StateName"]; return (s == null) ? String.Empty : (String)s; } set { ViewState["StateName"] = value; } } protected override ControlCollection CreateControlCollection() { return new EmptyControlCollection(this); } protected override void Render(HtmlTextWriter writer) { writer.Write("无状态属性Name:"); writer.Write(Name); writer.Write("<br/>"); writer.Write("状态属性StateName:"); writer.Write(StateName); } } }
页面进行回传的时候,状态属性将保存其值,无状态属性将清空其值;
设计期元数据attribute:
using System; using System.Web; using System.Web.UI; using System.ComponentModel; namespace ControlLibrary {
//默认事件 [DefaultEvent("Event")]
//默认属性 [DefaultProperty("Name")] public class ViewStateControl:Control { //确定成员是否为绑定 [Bindable(true)]
//属性设计器中的分类栏目 [Category("Default")]
//属性的默认值 [DefaultValue("")]
//属性描述 [Description("This is property")] public virtual string Name { get { String s = (String)ViewState["Name"]; return (s == null) ? String.Empty : (String)s; } set { ViewState["Name"] = value; } } protected override ControlCollection CreateControlCollection() { return new EmptyControlCollection(this); } protected override void Render(HtmlTextWriter writer) { writer.Write(Name); } } }
浙公网安备 33010602011771号