J'essaie d'éteindre la validation de la demande pour toutes les méthodes d'action dans un contrôleur en faisant ceci: La référence que j'utilise dit que c'est possible et me dit de le faire de cette façon. , mais pour une raison quelconque, cela ne fonctionne pas. P> Si je soumets tout HTML (même une simple balise simple) via une zone de texte, je reçois l'erreur: p> Une valeur de demande potentiellement dangereuse.Form a été détectée à partir du client (texte = "). P>
blockQuote> Il ne fonctionne pas non plus en attachant l'attribut à une méthode individuelle. p> Comment puis-je désactiver la validation de la demande pour un contrôleur? P>
EDIT H1> < p> Je travaille dans le serveur de test intégré à VS2008. P> p>
4 Réponses :
Je l'ai testé sur ma machine, à la fois sur la définition de la classe et la méthode d'action, et cela a fonctionné pour moi dans les deux cas. Êtes-vous sûr que votre affichage s'affiche avec votre méthode / contrôleur? Mettez-vous l'attribut sur la méthode GET ou la méthode postale?
[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]
public ActionResult MyAction (int id, string content) {
// ...
}
Dans la question initiale, j'ai déclaré que je l'ai fait. Et ma référence, Apress Pro ASP.NET MVC Cadre, indique clairement: "Si vous souhaitez le désactiver pour une méthode d'action spécifique ou sur un contrôleur spécifique, vous pouvez utiliser le filtre [ValidateInput], comme suit: [ValidateInput (Faux )] Classe publique MyController: contrôleur {...} "
Voir Stackoverflow.com/questions/807662/...
Désolé, ronnie. Cela fonctionne sur ma machine, que je dépose l'attribut sur la méthode ou la classe.
J'ai essayé le contrôleur et l'action. Je connais la vue Affichage avec la méthode d'action, car je n'ai que 1 vue et 1 contrôleur. J'ai fait une construction complète et une reconstruction. Je ne comprends pas pourquoi cela ne fonctionnera pas!
Ronnie, essayez-le de Keithm's Way. Mettre validateRequest = false; dans le constructeur de votre contrôleur.
Donc, il y a quelque chose de malheureusement faux. Envisagez de créer un nouveau projet avec un contrôleur simple et une vue, et testez à nouveau. Il y a une contrepartie dans la nature ASP.NET qui peut également être testée. Avez-vous trébuché sur ce post?
Assurez-vous d'ajouter [ValidateInput (FALSE)] dans l'action du message.
@RoberTharvey Vous dites que cela ne fonctionnera pas si la méthode d'action est obtenue?
PRO ASP.NET MVC Framework (P466) dit que ce qui suit est censé fonctionner:
public class MyController : Controller
{
public MyController() {
ValidateRequest = false;
}
}
Cela n'iriste pas d'intellisense ou de compiler ici. J'ai essayé de la mettre dans la méthode d'action (où il fait IntelliSense), mais cela n'a pas fonctionné.
"ValidateRequest = false;" est censé être dans le constructeur. Je l'avais essayé sur l'un de mes contrôleurs mais je l'ai transcrite mal.
Pouvez-vous publier votre fichier de contrôleur et votre fichier de visualisation.
Ceci fonctionne; p>
myTestController ---------------- ------------ p> myTest (index) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------- P> <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Index</title>
</head>
<body>
<% using (Html.BeginForm()) { %>
<%= Html.TextBox("test")%>
<button type="submit" >Submit</button>
<%} %>
</body>
</html>
Pour le faire fonctionner, vous devez modifier aussi web.config:
<system.web>
<httpRuntime requestValidationMode="2.0"/>
...
</system.web>
J'ai eu un projet ASP.NET MVC 1.0 déployé dans la production depuis plus d'un an, ce soir que le client m'envoie un email me disant que l'un des formulaires utilisant un éditeur WYSIWYG ne soumet pas. J'ai eu [ValidateInput (Faux)] sur l'action aussi longtemps que le site a été déployé et cela a fonctionné jusqu'à récemment. Le fournisseur d'hébergement doit avoir changé quelque chose à leur fin. J'ai ajouté la balise HTTPRuntime au système.Web comme suggéré Jan et il a corrigé mon problème.
Basé sur toutes les choses qui ne fonctionnent pas, vous devrez fournir beaucoup plus de détails. Êtes-vous en cours d'exécution dans IIS ou Cassini? Vous courez MVC V1.0, non? Quelle est la méthode signature de l'action qui échoue?
J'adore quand je trouve quelqu'un qui demande la question exacte que je n'ai que pour voir qu'il est fermé pour ne pas être applicable à d'autres visiteurs. Fml.