按钮单击事件错误

时间:2012-06-13 20:01:46

标签: c# asp.net visual-studio-2005

刚刚在我的网络应用程序中添加了一个新按钮,点击它时出现错误,我想知道这是否与错位代码有关。我将简要介绍一下我在做什么/在哪里做什么。非常感谢。

在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);
        }


    }
}

“/'应用程序中的服务器错误。

无效的回发或回调参数。使用配置或&lt;%@ Page EnableEventValidation =“true”%&gt;启用事件验证在一个页面中。出于安全考虑,此功能可验证回发或回调事件的参数是否来自最初呈现它们的服务器控件。如果数据有效且符合预期,请使用ClientScriptManager.RegisterForEventValidation方法注册回发或回调数据以进行验证。 “

2 个答案:

答案 0 :(得分:1)

这可能是服务器不知道的某种客户端更改的结果。很多时候,这是在JavaScript下拉列表中更改值的结果,例如。

要修复,你可以:

  1. 不使用JavaScript进行上述修改
  2. 使用UpdatePanel并将控件添加到其中。如果客户端需要进行更改,请触发UpdatePanel的更新,以便更新控件的视图状态。

答案 1 :(得分:1)

另一个问题可能是因为你的PopulateControls方法应该只在页面加载期间调用,而不是PostBack。我不能从上面说出来,但对我而言,它看起来只需要在Load上完成。尝试使用以下方法包装该调用:

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {    
            PopulateControls();
        }
    }