0

更新パネル内にいくつかのコントロールと下部に送信ボタンがある ASP.NET フォームがあります。

<asp:UpdatePanel runat="server" ID="upContent">
    <ContentTemplate>
        <asp:TextBox runat="server" ID="tbxMyTextBox" AutoPostBack="true" />
        <asp:Button ID="btnSubmit" runat="server" Text="Submit" OnClientClick="return doStuff()" OnClick="btnSubmit_Click" />
    </ContentTemplate>
</asp:UpdatePanel>

TextBox に何かを書き込んですぐに [送信] をクリックすると (最初に TextBox をクリックせずに)、変更は記録されません (サーバー側のイベント ハンドラーに見られるように)。ただし、TextBox に何かを書き込んでフォーカスを別のコントロールに変更すると、UpdatePanel を介して AutoPostback が発生し、[送信] をクリックするとこれらの変更が認識されます。添付されたクライアント側イベントとサーバー側イベントの両方を実行しながら、送信ボタンをクリックしたときにこのコンテンツを強制的に更新するにはどうすればよいですか? ありがとう!

4

2 に答える 2

1

送信時/クリック時のイベントハンドラーが原因で、テキストボックスがクリアされる可能性はありますか? Fiddler などのツールを使用して、要求された POST データを検査することをお勧めします。または、サーバー側のコードにブレークポイントを設定して、リクエスト データを検査することもできます。特にRequest.Form[tbxMyTextBox.UniqueID]探します - つまり、テキスト ボックスの名前 (UniqueIDサーバー側のプロパティに対応するクライアント側の名前プロパティ) の値の存在を探します。リクエストにテキストボックスに入力された値が含まれている場合、サーバー側で何かが起こっていますが、良いニュースはいつでも Request オブジェクトから値を取得できることです。Request オブジェクトに値が存在しない場合は、クライアント側のコードが送信前に値をクリアしていることを意味します。

于 2011-08-17T05:00:09.270 に答える
0

onclickメソッドがfalseを返す場合、ボタンが通常実行するアクションをキャンセルします。ボタンは通常フォームを送信しますが、送信していないように見えるため、クライアント側のjavascriptコードdoStuffはおそらくfalseを返します。

于 2011-08-17T02:32:28.533 に答える