关于CRM中Custom Page的一个小bug

最近在做一个Customization的时候,被一个问题困扰了很久,就是在一个aspx页面上,有一个dropdownlist,一个button,一个textbox,
其中的代码有:
protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            DropDownList1.Items.Add(new ListItem("1", "1"));
            DropDownList1.Items.Add(new ListItem("2", "2"));
            DropDownList1.Items.Add(new ListItem("3", "3"));
        }       
    }
protected void Button1_Click(object sender, EventArgs e)
    {
        TextBox1.Text = DropDownList1.SelectedValue;
    }
但奇怪的是我如果把页面放到ISV下面,打开页面后点击button,dropdownlist控件里面的Items会被清空,而把页面放到其他网站下面,就不会被清空,也就是说能取到DropDownList1.SelectedValue的值,而前者为空,后来在论坛里面问了刀客,给出了一个方法,在Page端显示指定EnableViewstate=true就可以了,然后也能够触发DropDownList的SelectedIndexChange的事件,的确好像是这样,服务器端没有能记住dropdownlist的改变,但不解的是该控件的EnableViewstate已经是true了,而别的控件就不需要指定page的这个属性,难道是这个控件特殊,依赖与page?
原文地址:https://www.cnblogs.com/yanluckly/p/1416310.html