2017-12-17 2 views
1

Framework-4.5.2 verwende ich webforms.This Dropdown ist in meinem masterpage.If ich jede Option funktioniert es nicht das Ereignis Brennen und es geht auf Fehler:ASP.NET Dropdownliste auf ausgewählten EnableEventValidation Fehler

Meine Masterseite:

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

ungültig Postback oder Callback-Argument. In der Seitenkonfiguration oder <% @ Page EnableEventValidation = "true"%> Ereignisvalidierung wird mit aktiviert. Diese Funktion dient aus Sicherheitsgründen zunächst dazu, dass Postback- oder Callback-Ereignisse aus dem Server-Control stammen, die ihre unabhängigen Variablen überprüfen. Wenn es so ist, wie die Daten gültig und erwartet sind, um Daten zu speichern, um Postback oder Callback ClientScriptManager zu validieren. Verwenden Sie die registerforeventvalidation-Methode.

Hier ist meine Dropdownlist:

<style> 
    .ddlLang { 
     background-color: black; 
     border-color: black; 
    } 
    .ddlLang option { 
     background-color: white; 
    } 
</style> 

Und meine Veranstaltung:

<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> 

Hier mein css ist

protected void ddlLang_OnSelectedIndexChanged(object sender, EventArgs e) 
    { 
     Session["CurrentLang"] = ddlLang.SelectedValue; 
    } 

Was ist das Problem hier ist, ich will nicht ändern meine EnableEventValidation.

+1

Der von Ihnen gepostete Code funktionierte einwandfrei und reproduziert das von Ihnen gemeldete Problem nicht. Sie erhalten einen Mac-Fehler bei der ViewState-Validierung. Schau dir html in deinem Browser an. Gibt es nur ein Formular-Tag in der gerenderten HTML-Seite? Kannst du das versteckte Eingabefeld "__EVENTVALIDATION" sehen? – derloopkat

+0

ja es gibt zwei

, man ist in einer anderen Form, aber nur einer ist runat = "Server" ist das das Problem? –

+0

Wenn die übergebene nicht die versteckte Eingabe hat dann ja, ist es. – derloopkat

Antwort

1

Für den Rekord, erweitern ich, was ich in Kommentaren erwähnt habe. Der Fehler, den Sie erhalten haben, ist, dass ASP.Net Ereignisse nicht validiert. Dies ist eine Sicherheitsfunktion, die sicherstellt, dass Post-Back-Aktionen nur von Ereignissen stammen, die auf dem Server erlaubt und erstellt wurden. Diese Einschränkung soll verhindern, dass Ihre Website durch gefälschte Postbacks gehackt wird.

<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> 

Wenn Masterseiten verwenden, manchmal HTML-Seite, kann sie mehr als einen form tag am Ende (z.B. den Master- und das Web Form definiert eine Form, so dass sie am Ende verschachtelte HTML-Seite in resultiert). Wenn das übermittelte Feld kein verstecktes Feld für die Ereignisvalidierung enthält und diese Funktion aktiviert ist, wird ein Validierungsfehler angezeigt.

+0

Vielen Dank, dass Sie sich die Zeit nehmen, um für diese großartige Information zu schreiben.Thnk you .. –

Verwandte Themen