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 は「空」です。1 つのブレークポイントを 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 に答える