Я не могу отключить проверку запросов для контроллера ASP.NET MVC - PullRequest
10 голосов
/ 10 июля 2009

Я пытаюсь отключить проверку запросов для всех методов действия в контроллере, выполнив следующее:

[ValidateInput(false)]
public class MyController : Controller
{
    ...

Ссылка, которую я использую, говорит, что это возможно, и говорит мне сделать это таким образом, но по какой-то причине это не работает.

Если я отправлю html (даже простой тег ) через текстовое поле, я получу сообщение об ошибке:

В клиенте обнаружено потенциально опасное значение Request.Form (текст = ").

Это также не работает, прикрепляя атрибут к отдельному методу.

Как отключить проверку запросов для контроллера?

EDIT

Я работаю во встроенном тестовом сервере VS2008.

Ответы [ 4 ]

14 голосов
/ 10 июля 2009

Я протестировал его на своей машине, как на определении класса, так и на методе действия, и он работал для меня в обоих случаях. Вы уверены, что ваш взгляд совпадает с вашим методом / контроллером? Вы помещаете атрибут в метод GET или метод POST?

[AcceptVerbs(HttpVerbs.Post)]
[ValidateInput(false)]   
public ActionResult MyAction (int id, string content) {   
    // ...   
}
13 голосов
/ 14 января 2011

Чтобы это работало, вам также нужно изменить web.config:

<system.web>
    <httpRuntime requestValidationMode="2.0"/>
    ...
</system.web>
2 голосов
/ 10 июля 2009

Pro ASP.NET MVC Framework (p466) говорит, что должно работать следующее:

public class MyController : Controller 
{
     public MyController() {
        ValidateRequest = false;
     }
}
0 голосов
/ 10 июля 2009

Можете ли вы опубликовать файл контроллера и файл просмотра.

Это работает;

MytestController --------------------------------

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;

namespace testapp.Controllers
{
    [ValidateInput(false)]
    public class MyTestController : Controller
    {

        public ActionResult Index()
        {
            return View();
        }

    }
}

MyTest (Index) ------------------------------------------- ------------

<%@ 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>
...