1

我在用户控件 uc1 中有一个文本框。我已将此 uc1 嵌入到名为 default.aspx 的页面中。我的问题是在运行应用程序并在文本框中输入一些数据后,刷新页面时我想显示我在文本框中输入的值而不清除文本框。我想要有关如何实现此目标的代码帮助。在此先感谢您的帮助。

4

3 回答 3

0

在您的 aspx.cs 页面顶部创建一个全局变量:

 public string textboxValue
    {
        get
        {
            if (ViewState["textboxValue"] != null)
                return ViewState["textboxValue"].toString();
            else
                return "";
        }

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

然后,在 PageLoad() 中,为 textboxValue 赋值:

protected void Page_Load(object sender, EventArgs e)
    {
if(!IsPostBack)
textboxValue = MyTextBox.Value;
else
MyTextBox.Value = textboxValue;
}

您还可以随时使用 textboxValue 来分配 MyTextBox 的值,或以任何其他可能对您有用的方式使用它。

于 2012-12-27T17:25:49.953 回答
0

所有 asp.net 服务器端控件 ( ) 的默认行为runat="server"是保持其状态。如果您的文本框在您的页面刷新时被清除,您可能会在代码中自己清除该值。

您是动态添加文本框还是用户控件?如果是这样,你在做PageInit吗?稍后添加它们可能会导致它们丢失状态。

于 2012-12-27T17:40:19.867 回答
0

我能够在不清除文本框中的值的情况下刷新页面。我这样做如下:我在 UC1.vb 中创建了一个公共属性,如下所示: Public Property textbox_value() As String

    Get
        If Session("textbox1") IsNot Nothing Then
            Return Session("textbox1").ToString()
        Else
            Return ""
        End If
    End Get
    Set(value As String)
        Session("textbox1") = value
    End Set
End Property

在用户控件的 page_load 事件中,我添加了以下代码: If IsPostBack Then textbox_value= textbox1.Text ElseIf Not IsPostBack Then ' 第一次加载页面或刷新页面时 textbox1.Text = textbox_value End If

希望能帮助到你。

于 2012-12-28T16:13:18.723 回答