9

皆さん、asp.net 3.5アプリケーションにユーザーコントロールがあり、ボタンクリックイベントでプレーンテキストを渡しています。ボタンはユーザーコントロールにあります。しかし、イベントを発生させると、次のエラーが発生します。

ポストバックまたはコールバック引数が無効です。イベントの検証は、設定で使用するか、ページで <%@ Page EnableEventValidation="true" %> を使用して有効にします。セキュリティ上の目的で、この機能は、ポストバック イベントまたはコールバック イベントへの引数が、それらを最初にレンダリングしたサーバー コントロールから発信されていることを確認します。データが有効で期待される場合は、ClientScriptManager.RegisterForEventValidation メソッドを使用して、検証のためにポストバックまたはコールバック データを登録します。

ブローのような Web フォーム ページに EnableEventValidation="false" を設定すると。イベントを発生させます。

<%@ Page EnableEventValidation="false" %>

しかし、それをfalseに設定するのは良い考えではないと考えています。それで、ここで代替手段は何ですか?「検証のためにポストバックまたはコールバック データを登録するには、ClientScriptManager.RegisterForEventValidation メソッドを使用してください」というエラーが表示されます。'しかし、私はそのことをどこに登録するつもりですか? ありがとう !

また、ユーザーコントロール内でいくつかの AjaxControlToolkit コントロールといくつかの jquery を使用しています。

4

5 に答える 5

4

試す

if (!Page.IsPostBack)

データグリッドにデータをロードしてバインドする前

于 2012-06-27T09:22:30.837 に答える
4

ASP.NET 2.0 のイベント検証の問題は、オール オア ナッシングであり、少し手間がかかることです。ここで何をすべきかを説明する記事を読みました。

基本的には、ユーザー コントロールの子コントロールをイベント検証エンジンに登録する必要があります。

C#
protected override void Render(HtmlTextWriter writer)
{
    // Register controls for event validation
    foreach (Control c in this.Controls)
    {
        this.Page.ClientScript.RegisterForEventValidation(
                c.UniqueID.ToString()
        );
    }
    base.Render(writer);
}

VB
Protected Overrides Sub Render(ByVal writer As System.Web.UI.HtmlTextWriter)

    For Each aControl As Control In Me.Controls
        Me.Page.ClientScript.RegisterForEventValidation(aControl.UniqueID.ToString)
    Next aControl

    MyBase.Render(writer)
End Sub

文字列を返す方法がわからないため、これで問題が解決しない場合があります。別の記事では、イベントの検証はコントロールの一意の ID とコントロールが返すすべての値の組み合わせであると説明しています。commandボタンの値を使用してテキストを渡す場合、このタスクで問題が発生する可能性があります。

問題の原因となっているイベントがクリックである場合は、ユーザー コントロールのコントロールを登録することでうまくいくはずです。

于 2013-08-13T20:35:19.293 に答える
1

私の状況では、GridViews データソースを更新しようとしてpage_loadいて、リクエストがポストバックであるかどうかを確認するのを忘れていたため、ソースが変更しようとしていて、このエラーがスローされました。ポストバックのチェックを行うと、正常に機能しました。これが将来誰かに役立つことを願っています。

    if (Page.IsPostBack == false)
    {
        this.sqlObj = new SqlServer(ConfigurationManager.ConnectionStrings["PdfReceiverConnectionString"].ToString());
        this.populateDataGrid();
    }
于 2013-07-11T15:57:12.543 に答える
0

有効のままにして、イベント検証用にコントロールを登録できます。PreRender または Render ページのライフ サイクルに次の呼び出しを追加すると、eventValidation をオフにしなくてもコントロールが機能するはずです。

  Page.ClientScript.RegisterForEventValidation(this.UniqueID);
于 2011-04-23T21:20:53.707 に答える
0

タグからネストされたHTMLを確認してください。

于 2018-07-08T13:14:58.033 に答える