0

VB

Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
    If Me.IsPostBack Then
tb.Text = Request.Form("ctl00$cphContent$tb").ToString()
    End If
            If Not String.IsNullOrEmpty(tb.Text) Then
                lit.Text = "Not Empty"
            Else
                lit.Text = "Empty"
                End If
End Sub

ASP

<asp:Literal ID="lit" runat="server"></asp:Literal> 
<asp:TextBox ID="tb" runat="server" Text=""></asp:TextBox>
<asp:Button ID="btn" runat="server" Text="click me" />

如果我第一次调用该页面,则 literal.text 为“空”。比我设置一个断点为 lit.Text = "Not Empty"。在我在文本框中输入内容并单击按钮后,断点处的元素显示 lit.Text 现在为“非空”。一切都很好......但是页面上的 lit.Text 仍然是“空”而不是“非空”......为什么?我无法更改 lit.Text。

问候

4

1 回答 1

1

发生这种情况是因为您在Page_Init事件期间修改了值。尝试在 中或之后对其进行修改Page_Load

阅读ASP.net Page LifeCycle。当您在 中设置值时Page_Init,发生这种情况后,在控件的 ViewState 中被加载,并且此设置将控件的值恢复为“空”。

于 2013-02-20T11:56:21.163 回答