How can I connect up my UserControl properties in such a way that they retain state on postback?

StackOverflow https://stackoverflow.com/questions/15393525

سؤال

In an ASP.NET Webforms application I have a submission form containing a UserControl with properties as such:

    public string Name
    {
        get
        {
            String s = (String)ViewState["Name"];
            return ((s == null) ? String.Empty : s);
        }

        set
        {
            ViewState["Name"] = value;
        }
    }

This is adapted from an MSDN walk-through. This is assumed to be "bound" (not databinding as I don't think that's possible) to the contents of a text box defined in the ascx as below:

  <asp:TextBox runat="server" ID="name" />

The question is, what is the best practice for allowing this to be accessible as a public property, and retain state on postback?

هل كانت مفيدة؟

المحلول

The simplest option is to have the public properties on your UserControl delegate to the properties of the child controls:

public string Name
{
   get { return name.Text; }
   set { name.Text = value; }
}

The TextBox will then take care of maintaining the state on postback.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top