选择EnableEventValidation错误的ASP.NET Dropdownlist

问题描述 投票:1回答:1

框架4.5.2我使用webforms.This下拉列表在我的主页。如果我选​​择任何选项它不会触发事件,它会转到错误:

我的主页:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Home.master.cs"  Inherits="LandOfSport.UI.apps.mp.Home" %>

无效的回发或回调参数。在页面配置或<%@ Page EnableEventValidation =“true”%>事件验证中使用。此功能出于安全原因,最初处理来自服务器控件的回发或回调事件会验证它们的自变量。如果它类似于数据有效和预期,则保存数据以验证回发或回调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。

asp.net dropdown
1个回答
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页面中)。如果提交的那个没有用于事件验证的隐藏字段并且启用了此功能,则会出现验证错误。

© www.soinside.com 2019 - 2024. All rights reserved.