0

「無効なポストバックまたはコールバック引数」を取得し続けるため、イベント登録用のボタンをいくつか登録しようとしています。ボタンのイベントを __doPostBacks() を介して手動で渡しているため、クライアント側の検証のために、それと関係があると思います。

Render をオーバーライドして、次のように RegisterForEventValidation を使用しました。

protected override void  Render(HtmlTextWriter writer)
{
    ClientScript.RegisterForEventValidation(btnNuevo.UniqueID);
    ClientScript.RegisterForEventValidation(btnBorrar.UniqueID);
    ClientScript.RegisterForEventValidation(btnEditar.UniqueID);
    ClientScript.RegisterForEventValidation(btnAlquilar.UniqueID); 
    base.Render(writer);
}

ただし、クライアント側の .aspx ページの __doPostBacks は次のように記述されます。

...
__doPostBack('<%= btnNuevo.UniqueID %>', "");
...
__doPostBack('<%= btnBorrar.UniqueID %>', selected.childNodes[0].innerText);
...
__doPostBack('<%= btnEditar.UniqueID %>', index);
...
__doPostBack('<%= btnAlquilar.UniqueID %>', indexaux);

ここで、selected.childNodes[0].innerText、index および indexaux は文字列です。これでも例外がスローされます。

コントロールのキーと引数を渡す RegisterForEventValidation のオーバーロードがあることは知っています。

事は、私はそれを書く方法がわからないということです。セレクター、インデックス、およびインデックスソーは、ユーザーによるページとの対話 (つまり、GridView での行の選択) に依存するため、引数がどうなるかを事前に知ることは想定されていません。私が見つけた唯一の例は、引数が常に同じであるため、RegisterForEventValidation("nameOfControl", "XXXX") と記述するだけです。ここで、"XXXX" は固定文字列です。

これをどのように書くか、またはこれが問題ではないかどうかについてのアイデアはありますか?

ありがとう。

4

1 に答える 1

0

このアプローチに設定されているかどうかはわかりませんがEnableEventValidation、ページ ディレクティブで false に設定できます。

<%@ Page Language="C#" EnableEventValidation="false" ... %>
于 2012-04-13T21:39:34.520 に答える