Frage

Ich möchte die „<“ Zeichen in das Formularfeld durch einen regex Validator abzufangen. Ich werde das Problem in 3 Schritten beschreiben:

Schritt 1: . Wenn ich versuche, ein Formular mit einem Feld, das die „<“ Zeichen enthält, zu unterbreiten, erhalte ich die „Potentiell gefährliche Anfrage ...“ - wie in ASP.NET erwartet

Schritt 2 : ASP.NET ist RequestValidation zu vermeiden, ich meine Update-Methode in der Steuerung mit "[ValidateInput (false)]" schmücken.

Es funktioniert wie erwartet - jetzt kann ich einstellen „<“ Zeichen ohne Fehler

.

Schritt 3: : Ich benutze xVal mit DataAnnotations. Zum Beispiel [Erforderlich] oder [StringLength (255)] wie erwartet funktioniert.

Aber wenn ich verwende: [RegulaererAusdruck ( "^ [^ <>] * $", Errormessage = "Sonderzeichen sind nicht erlaubt.")], Ich erhalte die "Potenziell dangeros Anfrage ..." Fehler wieder trotz der [ValidateInput (false)] Richtlinie.

Was ist los? Gibt es einen einfacheren Weg für regex validaton, aber mit [ValidateInput (false)] anstelle? Natürlich, ich mag meinen Bestätigungscode in dem Modell haben, nicht in der Steuerung.

War es hilfreich?

Lösung

  

Nein, es war ein Problem in MVC 1 + xVal.   In 2 MVC arbeitet die Validierung als   soll (und es gibt keine Notwendigkeit für xVal   mehr) - Alex42

Sieht aus wie der Bot auf dem Druck dieses eine nach oben hält noch. Könnten Sie eine Antwort markieren, um akzeptiert, dass es weiß?

Andere Tipps

Ich verwende xVal & nhibernate.validator und ich versuchte, dieses Verhalten zu reproduzieren, sondern weil der Prüfer in die Client-Seite gebunden ist konnte ich nicht einen Wert von Vergangenheit der Clientseite Validierung erhalten. wenn ich Sie Javascript deaktiviert, es wurde auf der Server-Seite Validierung und wurde durch den regulären Ausdruck Validator gefangen.

habe ich versucht, die gleiche Sache, um die Daten Anmerkungen Validierung Attribute und Binder Modell mit der Verwendung und es machte es Vergangenheit auch.

Es muss etwas anderes sein los, dass der Fehler verursacht. Leider kann ich nicht mehr hilfreich sein!

Versuchen Sie es mit einer einfachen Regel mit diese Methode . Dies kann zumindest beseitigen xVal aus der Gleichung. Wenn das Problem weiterhin besteht, dann würde ich vorschlagen, es verwandt ist entweder:

  • die Implementierung von MVC-Standard Modell Binder
  • oder es gibt ein Problem mit dem MVC-Ansicht-Engine in der Veröffentlichung Ihres mit, dass irgendwie ist damit eine Ausnahme für die Sie durch die Validierung der < angegebene Attribut gemacht werden, wenn es shoudn't sein

wenn es nur ein Feld, könnte man einfach eine Routine schreibt für ein Zeichen suchen ‚‘ und entfernen. Sie können dies erreichen, indem durch die Verwendung von Teilkette zu machen. hoffen, dass dies das hilft

  • Verwendung For-Schleife Textlänge getestet werden (for (int i = 1, i <= text.length, ++))
  • überprüfen jedes Zeichen begining 1 (z ch = text.substring (i, 1)
  • fügen jedes Zeichen lesen String tmp außer '

Ich nehme an, die statische Methode Escape() dies für Sie lösen würde.

  Regex r = new Regex(Regex.Escape(expression));

Setzen Sie diese Zeile in web.config

<httpRuntime requestValidationMode="2.0" />

Dies ist die Veränderung in ASPNET 4.0

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top