在回发时获取asp.net控件的旧值

在回发时获取asp.net控件的旧值,asp.net,viewstate,Asp.net,Viewstate,我希望能够找到asp.net控件的旧值(文本框、复选框等),而不依赖于事件(例如OnTextChange事件)。像“someTextboxControl.OldText”这样的东西会很完美!我认为它存储在viewstate中,需要通过自定义控件以某种方式获取它。有什么想法吗?Shrage提供的答案很有帮助,但需要额外的搜索才能使此解决方案起作用。我将他的代码放在我正在处理的页面名称空间中的代码后面。此外,我必须注册控件,并更改和更新有问题的控件 public class TextBoxEx:Sy

我希望能够找到asp.net控件的旧值(文本框、复选框等),而不依赖于事件(例如OnTextChange事件)。像“someTextboxControl.OldText”这样的东西会很完美!我认为它存储在viewstate中,需要通过自定义控件以某种方式获取它。有什么想法吗?

Shrage提供的答案很有帮助,但需要额外的搜索才能使此解决方案起作用。我将他的代码放在我正在处理的页面名称空间中的代码后面。此外,我必须注册控件,并更改和更新有问题的控件

public class TextBoxEx:System.Web.UI.WebControls.TextBox
    {
        public string OldText { get; set; }


        protected override bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
        {
            OldText = Text;
            return base.LoadPostData(postDataKey, postCollection);
        }

    }
注册扩展textboxx控件;这就在page指令的正下方

    <%@ Register TagPrefix="group" Namespace="ESM_Web_Portal" Assembly="ESM Web Portal" %>

Shrage提供的答案很有帮助,但需要一些额外的搜索才能使此解决方案起作用。我将他的代码放在我正在处理的页面名称空间中的代码后面。此外,我必须注册控件,并更改和更新有问题的控件

注册扩展textboxx控件;这就在page指令的正下方

    <%@ Register TagPrefix="group" Namespace="ESM_Web_Portal" Assembly="ESM Web Portal" %>
    protected void CheckForExistingPartNumber(object sender, ServerValidateEventArgs e)
    {
        CustomValidator cv = ((CustomValidator)sender);
        TextBoxEx tb = (TextBoxEx)cv.Parent.FindControl(cv.ControlToValidate);

        if (SupplyBLL.GetSupplyByPartNumber(e.Value) != null && tb.Text != tb.OldText)
        {
            e.IsValid = false;
        }
    }