0

AutoPostBack イベントが発生する前に、ASP:Button をクリックしてセッション変数を設定するにはどうすればよいでしょうか。

これが私が今持っているものですが、これを正しく行っているかどうかは正確にはわかりません:

 <asp:Button ID="CommitBTN" runat="server" PostBackUrl="~/MMR_Home.aspx" 
 onclick="CommitBTN_Click" UseSubmitBehavior="true" 
 OnClientClick='<% string temp1 = "true"; Session["ClickedFlag"] = temp1; %>' Text="Commit Changes to Database" />

これはこのアクションを実行する正しい方法ですか、それとも完全に間違っていますか?

編集:

ボタンタグを次のように変更しました。

 <asp:Button ID="CommitBTN" runat="server" PostBackUrl="~/MMR_Home.aspx" 
 onclick="CommitBTN_Click" OnClientClick="document.getElementById('<%= Hidden.ClientID
  %>').value='1'" UseSubmitBehavior="true" Text="Commit Changes to Database" />

私はこれを私のエラーとして受け取ります:

Microsoft JScript ランタイム エラー: プロパティ 'value' の値を設定できません: オブジェクトが null または未定義です

4

2 に答える 2

1
  1. コントロールを使用しHidden Fieldます。

  2. ボタンクリックHidden Field時に を 1 に更新 します。Client

  3. 非表示フィールドSession Valueのセッション変数` Updateを更新します。Page Load' event. The Value will be 1 then update the Session variable and set thevalue to 0 underneath the

  4. イベントを使用する理由は、PreInit、Init、InitComplete、PreLoad、Load などのページ イベントPage LoadをクリックするButtonと、Control の前に実行されるためです。page life cycleexecutionButton

Page events実行は以下のように行われます..

  1. プリイット
  2. 初期化
  3. 初期化完了
  4. プリロード
  5. ロード
  6. 制御イベント
  7. ロード完了
  8. 事前レンダリング

これがあなたを助けることを願っています...

于 2012-07-25T18:53:58.977 に答える
1

これを使って:

aspx ファイル内:

<form runat="server">
    <asp:Button ID="CommitBTN" runat="server" Text="Button" onclick="CommitBTN_Click" OnClientClick="document.getElementById('HiddenField').value='Ram'"/>
    <asp:HiddenField ID="HiddenField" runat="server" />
</form>

または

<script type="text/javascript">
    function setMyHiddenField(myValue) {
        document.getElementById('HiddenField').value = myValue;
}
</script>

<form runat="server">
<asp:Button ID="CommitBTN" runat="server" Text="Button" onclick="CommitBTN_Click" OnClientClick="setMyHiddenField('Ram')"/>
<asp:HiddenField ID="HiddenField" runat="server" />

================================================== ================

aspx.cs ファイル内

protected void CommitBTN_Click(object sender, EventArgs e)
    {
        Session["ClickedFlag"] = HiddenField.Value;
        Response.Write(Session["ClickedFlag"]);
    }

「Ram」を自分の値に置き換えるのは簡単です。;)

Ram を temp1 に簡単に変更できます。

setMyHiddenField('temp1')

または、CommitBTN が押される前に、別のコントロール イベントでこの関数を呼び出すことができます。

于 2012-07-25T19:02:06.350 に答える