2010-04-23 6 views
7

Je veux désactiver RequestValidation sur une vue particulière dans ASP.NET MVC 2.0 RTM. donc j'ajouté un peu nécessaire pour voir la section Page directive comme suit:ValidateRequest = Faux mais en action c'est toujours vrai et ignoré ça?

<%@ Page ValidateRequest="false" Language="C#" MasterPageFile="Path" Inherits="System.Web.Mvc.ViewPage<Path>" %> 

mais RequestValidation est pas désactivé! J'ai aussi ajouté RequestValidation Attributs à l'action liée au contrôleur comme ci-dessous:

[System.Web.Mvc.ValidateInput(false)] 
public System.Web.Mvc.ActionResult Create(Model instance) 
{ 
    //Do here something 
} 

: ') mais RequestValidation est pas désactivé aussi!

dans le dernier essai i mis RequestValidation false dans Web.config fichier comme ci-dessous:

<pages validateRequest="false" /> 

RequestValidation est toujours pas éteint!

Pourquoi? merci d'avance;)

+0

Comment déterminez-vous que ValidateRequest n'est pas éteint? Veuillez également fournir vos versions de framework .net, asp.net et mvc. –

+0

parce que quand je soumets un formulaire dont un sur le champ ont la balise html je reçois une exception ValidationRequest. J'utilise ASP.NET 4.0 et MVC 2.0 – Sadegh

+0

merci pour votre lien. mais si j'effectue la manière fournie d'avoir ceci, toutes les nouvelles caractéristiques de ceci seront perdues! il n'y a aucun moyen d'ignorer la validation pour vue/contrôleur particulier? – Sadegh

Répondre

11

Si vous utilisez asp.net 4.0, le comportement de validation de la fonction de demande a été modifié depuis la version 2.0. Découvrez le breaking changes document here. Si tel est le cas, vous pouvez résoudre les problèmes en réglant de nouveau le comportement de validation de la demande au 2.0 dans le web.config comme ceci:

<httpRuntime requestValidationMode="2.0" /> 
+2

Cela m'a sauvé le cul aujourd'hui. Merci :) – SirDemon

+2

Cela résout également le problème pour moi. Cependant je ne comprends pas pourquoi. Les changements de rupture parlent d'étendre la validation aux requêtes non-aspx, mais je ne l'utilise que pour une page aspx normale. En ce moment, il me semble que validateRequest est simplement cassé en 4.0. Si ce n'est pas le cas, y a-t-il un moyen approprié de le faire en 4.0 sans essentiellement revenir à la version 2.0? – Nicolas78

+1

FYI: "La première modification consiste à définir l'attribut requestValidationMode de l'élément httpRuntime sur" 2.0 "Ce paramètre permet de valider la requête plus tard dans la séquence des événements de traitement des demandes Le paramètre est requis pour les applications qui utilisent ASP.NET 4 et plus tard, car à partir de ASP.NET 4, la validation des requêtes a lieu plus tôt dans le cycle de vie de la requête que dans les versions précédentes d'ASP.NET. " à partir de https://msdn.microsoft.com/fr-fr/library/hh882339.aspx – Gusman

0

juste ajouter

[ValidateInput (false)]

dans votre fonction de contrôleur mais ne pas oublier de coder la valeur pour prévenir les codes nuisibles

[ValidateInput(false)] 
    public string Browse(string test) 
    { 
     string message = HttpUtility.HtmlEncode("Value = " + test); 
     return message; 
    } 
Questions connexes