【发布时间】:2013-09-27 14:47:34
【问题描述】:
我正在尝试从后面的代码向按钮添加 OnClick 属性。根据参加元素是否为 0,将确定添加哪个 OnClick 属性。当我单击带有以下代码的按钮时,出现以下错误:
"Microsoft JScript 运行时错误: Sys.WebForms.PageRequestManagerServerErrorException:回发无效 或回调参数。使用配置或 在页面中。出于安全目的, 此功能验证回发或回调事件的参数 源自最初呈现它们的服务器控件。如果 数据有效且符合预期,请使用 ClientScriptManager.RegisterForEventValidation 方法,以便 注册回发或回调数据以进行验证。”
我做错了什么?
ASPX
<%@ Page Title="" Language="C#" EnableEventValidation="true" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="test.CommunityEvents.Default" %>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:DataList ID="DataList1" RepeatColumns="1" CellPadding="5" OnItemDataBound="Dl1_ItemDataBound"
runat="server">
<ItemTemplate>
<div id="Attendingbox" runat="server">
<asp:Label ID="AttendingorNot" runat="server"></asp:Label>
</div>
<br />
<asp:Button ID="SignupButton" runat="server" Text="" />
</ItemTemplate>
</asp:DataList>
</ContentTemplate>
</asp:UpdatePanel>
代码背后
protected void Dl1_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
.....//removed other code to save space
Button SignupButton = (Button)e.Item.FindControl("SignupButton");
if (Attending == 0)
{
AttendingorNot.Text = "You are not attending";
AttendingorNot.Attributes.Add("class", "alert");
SignupButton.Text = "Attend";
SignupButton.Attributes.Add("class", "btn btn-large btn-success");
SignupButton.Click += new EventHandler(Submit_Add);
}
else
{
AttendingorNot.Text = "You are attending!";
AttendingorNot.Attributes.Add("class", "alert alert-success");
SignupButton.Text = "Remove";
SignupButton.Attributes.Add("class", "btn btn-large btn-danger");
SignupButton.Click += new EventHandler(Submit_Remove);
}
}
}
private void Submit_Remove(object sender, EventArgs e)
{
Response.Redirect("Default.aspx?msg=work");
}
private void Submit_Add(object sender, EventArgs e)
{
Response.Redirect("Default.aspx?msg=gone");
}
【问题讨论】: