2017-05-05 2 views
0

Hier ist meine ganze Seite Körper html:Script verursacht Postbacks mit Validatoren

<body> 
    <form id="form1" runat="server"> 
     <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
     <div> 
      <asp:TextBox runat="server" ValidationGroup="vg1" ID="txtTest" /> 
      <asp:RequiredFieldValidator runat="server" ErrorMessage="Required" ControlToValidate="txtTest" ValidationGroup="vg1" /> 
      <asp:Button runat="server" ValidationGroup="vg1" Text="test" /> 
     </div> 
    </form> 
</body> 

Es gibt nichts in der Kopfzeile. Keine zusätzlichen .js oder ähnliches.

Wenn ich den ScriptManager entferne, funktioniert der RequiredFieldValidtor einwandfrei, indem er ein Postback nicht zulässt, wenn das Textfeld nicht ausgefüllt ist (zeigt "Required" wie erwartet an).

Mit dem ScriptManager, Postback passiert IMMER. Der Fehler wird angezeigt, der Postback wird jedoch weiterhin ausgeführt. Was gibt? Das hat früher nicht so funktioniert. Fehle ich einen Parameter oder etwas im ScriptManager, damit das alles funktioniert?

.NET-Version könnte das Problem BE

ich festgestellt habe, dass dies in .net 4.0 perfekt funktioniert gut und eariler aber schlägt fehl, wenn Sie 4.5 und höher verwenden. Etwas ist in 4.5 kaputt gegangen oder verwende ich es nicht richtig?

Danke!

+1

Mögliches Duplikat von [Warum ScriptManager Postback auf RequiredFieldValidator in ASP.NET (Web Forms) verursacht?] (Http://stackoverflow.com/questions/31877559/why-scriptmanager-causes-postback-on-requiredfieldvalidator-in- asp-net-web-form) – Gusman

+0

Bitte bearbeite einfach deine vorherige Frage, um nach dem Posten zusätzliche Informationen hinzuzufügen, lösche nicht und stelle die gleiche Frage erneut (wird als Duplikat eines gelöschten markiert). –

+0

die vorherige Frage war völlig anders. Das war viel einfacher, also dachte ich, es wäre besser, als den Text des gesamten letzten Posts zu löschen und neu anzufangen. –

Antwort

0

Seit .net Version 4.5 die Einführung von unaufdringlich Validierung es notwendig geworden ist Ihre jquery Ressourcen in Ihnen Global.asax Seite zu registrieren, wie folgt:

void Application_Start(object sender, EventArgs e) 
{ 
    string JQueryVer = "1.7.1"; 
    ScriptManager.ScriptResourceMapping.AddDefinition("jquery", new ScriptResourceDefinition 
    { 
     Path = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".min.js", 
     DebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".js", 
     CdnPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".min.js", 
     CdnDebugPath = "http://ajax.aspnetcdn.com/ajax/jQuery/jquery-" + JQueryVer + ".js", 
     CdnSupportsSecureConnection = true, 
     LoadSuccessExpression = "window.jQuery" 
    }); 

} 

jedoch auch die definieren müssen Skript-Manager ordnungsgemäß in Ihrem Markup wie folgt aus:

<asp:ScriptManager runat="server" EnableScriptGlobalization="True" EnableCdn="True"> 
    <Scripts> 
     <asp:ScriptReference Name="jquery" /> 
     <asp:ScriptReference Name="WebUIValidation.js" Assembly="System.Web" /> 
    </Scripts> 
</asp:ScriptManager> 

Ohne die Cdn die Validierer ermöglicht funktionieren nicht richtig und ein Postback zu ermöglichen.

Diese Information wurde aus einer Vielzahl von Ressourcen gesammelt und experimentiert. In meiner ursprünglichen Frage war alles, was notwendig war, den Skriptmanager wie oben beschrieben zu definieren und es funktioniert gut.

Hoffentlich wird diese Informationen ermöglichen es Entwicklern, die Punkte zwischen Postbacks zu verbindenValidatoren und unaufdringlich Validierung verwenden.