0

次のコードがあります、

<form id="form1" runat="server">
<asp:Label runat="server" ID="Label1" EnableViewState="false" />
<asp:CheckBox runat="server" ID="Check1" EnableViewState="false" Checked="false" />
<asp:Button runat="server" ID="Button1" Text="Button1" />
</form>

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack) return;

    Label1.Text = "Label value";
    Check1.Checked = true;
}

ポストバックテキストが絶望しているのに、チェックボックスがオンのままになっているのはなぜですか?ありがとう

4

2 に答える 2

2

このMSDN記事からの参照の引用-ScottMitchelldocによるASP.NETビューステートの理解

ページライフサイクルステージ3-ポストバックデータの読み込み

ビューステートが、TextBox、CheckBox、DropDownLists、およびその他のWebコントロールに、ポストバック全体でそれらの値を記憶させることに何らかの責任があるというのは、開発者の間でよくある誤解です。値はポストバックフォームフィールド値を介して識別され、IPostBackDataHandlerを実装するコントロールのLoadPostData()メソッドで割り当てられるため、これは当てはまりません。

于 2012-06-09T08:54:22.797 に答える
1

チェックボックスはフォームデータから状態を取得するため、再作成時にチェックされたままになります。

Changeビューステートは、サーバー側のイベントが機能するように、チェックボックスが以前にどのような状態であったかを記憶するためにのみ必要です。

于 2012-06-09T08:45:09.320 に答える