服务器控件开发(三)

  视图状态属性和设计期元数据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); } } }

 

 

    

posted on 2017-07-31 17:07  神奇猪的博客  阅读(136)  评论(0)    收藏  举报