0

Web アプリケーションに新しいボタンを追加したところ、クリックするとエラーが表示されました。これはコードの配置ミスに関係しているのでしょうか。どこで何をしたかを簡単に説明します。どうもありがとう。

ascx ファイル内:

<asp:Button ID="btn_rezerv" runat="server" Text="Reserve film" OnClick="btn_rezerv_Click"/>  

ascx.cs ファイル内:

namespace CinProj.UserControls
{
    public partial class FilmsList : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            PopulateControls();


        }

        private void PopulateControls()
        {
            string categId = Request.QueryString["CategID"];
            string filmId = Request.QueryString["FilmID"];
            ....


            if (categId != null)
            {
                .....
            }
            if (filmId != null)
            {
                ......
                Button btn_rezerv = (Button)item.FindControl("btn_rezerv");

            }


        }

        protected void btn_rezerv_Click(object sender, EventArgs e)
        {
            string fid = Request.QueryString["FilmID"];
            ShoppingCartAccess.AddItem(fid);
        }


    }
}

「「/」アプリケーションでサーバー エラーが発生しました。

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

4

2 に答える 2

1

もう 1 つの問題は、PopulateControls メソッドが PostBack ではないページの読み込み中にのみ呼び出される可能性があるためです。上からはわかりませんが、ロード時にのみ行う必要があるように見えます。その呼び出しをこれでラップしてみてください:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {    
            PopulateControls();
        }
    }
于 2012-06-13T20:43:58.837 に答える
1

これは、サーバーが認識していない何らかのクライアント変更を行った結果である可能性があります。多くの場合、これは JavaScript のドロップダウンで値を変更した結果です。

修正するには、次のことができます。

  1. 上記の変更に JavaScript を使用するのをやめる
  2. UpdatePanel を使用して、それにコントロールを追加します。クライアントが変更を加える必要がある場合は、コントロールのビューステートを更新するために UpdatePanel の更新をトリガーします。
于 2012-06-13T20:13:28.120 に答える