0

Stack Overflowで同様の質問を調べましたが、この特定の問題の解決策を見つけることができませんでした。単純な(実際にはそうではありませんが、ふりをしてみましょう)ASP.NETページに更新パネルがあります。

この更新パネルにはHiddenField、独自のカスタムJavaScriptを介して設定/更新される値を持つコントロールがあります。Firebugを使用してDOMで確認できるように、値更新されます。

この隣にHiddenFieldLinkButton、JavaScriptを呼び出してHiddenFieldusingの値を変更するがありますOnClientClick(これは機能します)。には、値が変更された後に実行されるハンドラーLinkButtonもあります。OnClick

ただし、ハンドラーでは、JavaScriptによって設定された値ではなく、OnClickの初期値を取得します。HiddenField

どうしてこれなの?これは「PEBKAC」の場合ですか?

編集:TextBox成功せずに同じことを試みました。また、フォームを送信する前にFirebugを使用して値を手動で変更しようとしましたが、成功しませんでした。

編集2:私はちょうどそれが物事を台無しにしていPage_Loadたハンドラーの前に呼び出されることに気づきました。OnClick他の人も同じ問題を抱えている可能性があり、この質問が役立つと思うかもしれないので、私は質問を削除しません。

4

3 に答える 3

1

これは、ビューステートがあなたを悪い冗談にしているように見えます(よくあることです)。私が推測するのは、ページがポストバックされると、非表示フィールドが Viewstate に含まれる値で初期化されるということです。

1 つのことを試してください: 値に直接アクセスしないyourHiddenField.Valueでください。ただし、ページの OnInit で値を取得しRequest.Forms[yourHiddenField.UniqueId]て HiddenField にキャストし、値を抽出します。これが正しい構文かどうかはわかりません。私の記憶が正しければ、「投稿された」値は Request オブジェクトのどこかにあるはずです。そこに値が得られるかどうかを確認してください。そこに到達した場合、問題は、ページの OnInit イベントの後にマップされたビューステートです。それから、その解決策を見つけなければなりません...

于 2009-09-17T13:41:02.557 に答える
0

AJAX 更新パネルによって提供される EndRequestHandler イベントを使用してそれを行う必要があります。

こちらをご覧ください -->

http://www.codeproject.com/KB/ajax/AfterAjaxUpdate.aspx?display=印刷

于 2009-09-17T12:28:48.120 に答える
0

クライアントで新しい入力をどのように生成していますか? 代わりにサーバーでこれを実行することは可能でしょうか?

このようにして、とOnClickの両方の代わりにだけを使用できます。OnClickOnClientClick

于 2009-09-17T13:16:51.153 に答える