框架4.5.2我使用webforms.This下拉列表在我的主页。如果我选择任何选项它不会触发事件并且它会出错:
我的母版页:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Home.master.cs" Inherits="LandOfSport.UI.apps.mp.Home" %>
无效的回发或回调参数。在页面配置或&lt;%@ Page EnableEventValidation =“true”%&gt;事件验证使用。此功能出于安全原因,最初处理来自服务器控件的回发或回调事件会验证它们的自变量。如果数据有效且预期,则保存数据以验证回发或回调ClientScriptManager。使用registerforeventvalidation方法。
这是我的下拉列表:
<asp:DropDownList runat="server" AutoPostBack="True" ID="ddlLang"
CssClass="ddlLang" OnSelectedIndexChanged="ddlLang_OnSelectedIndexChanged" >
<asp:ListItem Text="TR" Value="tr-TR"></asp:ListItem>
<asp:ListItem Text="US" Value="en-US"></asp:ListItem>
</asp:DropDownList>
这是我的css:
<style>
.ddlLang {
background-color: black;
border-color: black;
}
.ddlLang option {
background-color: white;
}
</style>
我的活动:
protected void ddlLang_OnSelectedIndexChanged(object sender, EventArgs e)
{
Session["CurrentLang"] = ddlLang.SelectedValue;
}
这里有什么问题我不想改变我的EnableEventValidation。
答案 0 :(得分:1)
为了记录,我正在扩展我在评论中提到的内容。您得到的错误是ASP.Net无法验证事件。这是一项安全功能,可确保回发操作仅来自服务器上允许和创建的事件。此限制旨在防止您的网站被欺骗性的回复攻击。
<form method="post" action="./WebForm1.aspx" id="form1">
<!-- Html dropdown and other tags here... -->
<input type="hidden"
name="__EVENTVALIDATION"
id="__EVENTVALIDATION"
value="Z8V8I/94JbyXAGZJ9RlOKv56ns..." />
</form>
使用母版页时,有时候生成的Html页面最终可能会有多个form
标记(例如,Master和WebForm都定义了一个表单,因此它们最终嵌套在生成的html页面中)。如果提交的那个没有用于事件验证的隐藏字段并且启用了此功能,则会出现验证错误。