Dlaczego ValidateInput (False) nie działa?

Konwertuję aplikację stworzoną przy użyciu webforms na asp.net Framework mvc z wykorzystaniem vb.net mam problem z jednym z moich poglądów. Otrzymuję żółty ekran śmierci z napisem " potencjalnie niebezpieczna Prośba.Wartość formularza została wykryta od klienta" podczas przesyłania formularza. Używam tinymce jako mojego RTE. Ustawiłem sam widok

ValidateRequest= "false"

Wiem, że w MVC nie respektuje tego z tego co do tej pory czytałem. Tak to ująłem na działanie kontrolera, jak również. Wypróbowałem różne konfiguracje:

<ValidateInput(False), AcceptVerbs(HttpVerbs.Post)> _

...i...

<AcceptVerbs(HttpVerbs.Post), ValidateInput(False)> _

...i tak też...

<ValidateInput(False)> _
<AcceptVerbs(HttpVerbs.Post)> _
Żeby zobaczyć, czy to coś zmieni, ale wciąż mam żółty ekran śmierci. Chcę tylko ustawić go dla tego widoku i konkretnej akcji w moim kontrolerze, do której odnosi się mój post. Coś przeoczyłem?
Author: Nurvx, 2009-04-30

7 answers

Czy jesteś pewien, że akcja kontrolera jest tym, na którym masz atrybuty?

 17
Author: Chad Moran,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-30 16:09:18

Z asp.net 4, musisz skonfigurować tryb walidacji w Internecie.config również.

Ustaw jako potomek elementu <system.web>:

<system.Web>
  ...
  <httpRuntime requestValidationMode="2.0"/>     

Asp.Net 4 ustawia domyślnie requestValidationMode na 4.0, co nakazuje systemowi przeprowadzenie walidacji żądania przed fazą BeginRequst żądania HTTP. Walidacja nastąpi, zanim system osiągnie atrybut action, mówiąc mu, aby nie walidował żądania, przez co atrybut staje się bezużyteczny. Ustawienie requestValidationMode = "2.0" powróci do asp.net 2.0 żądanie zachowania walidacji, pozwalające atrybutowi ValidateInput działać zgodnie z oczekiwaniami.

 130
Author: Jim Geurts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-19 10:56:12

Kiedy używasz własnych segregatorów modeli, które implementują interfejs IModelBinder , zauważysz, że te niestandardowe segregatory modeli zawsze sprawdzają poprawność danych, niezależnie od atrybutów. Możesz dodać kilka linii kodu, aby niestandardowe segregatory modelu respektowały filtr ValidateInput akcji:

// First check if request validation is required
var shouldPerformRequestValidation = controllerContext.Controller.ValidateRequest && bindingContext.ModelMetadata.RequestValidationEnabled;

// Get value
var valueProviderResult = bindingContext.GetValueFromValueProvider(shouldPerformRequestValidation);
if (valueProviderResult != null)
{
    var theValue = valueProviderResult.AttemptedValue;

    // etc...
}
To bardzo ładnie wyjaśnia Martijn Boland tutaj: http://blogs.taiga.nl/martijn/2011/09/29/custom-model-binders-and-request-validation/
 3
Author: Rahatur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-10 12:45:18

Możesz spróbować uzyskać dostęp do pola jak HttpContext.Prośba./ Align = "left" / Form ["FieldName"]

 1
Author: Chitta,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-13 12:36:45

Zwróć uwagę, że te sugestie nie naprawią problemów spowodowanych przez błąd, który pojawia się, gdy musisz użyć [ValidateInput (false)] w połączeniu z FormCollection.

Zobacz: ASP.NET MVC 3 ValidateRequest (false) nie działa z FormCollection

 0
Author: Frank van Eykelen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:17:58

Jeśli użyjesz modelu wejściowego i użyjesz AllowHtml na żądanej właściwości, zostaniesz odblokowany.

public class InputModel
{
    [AllowHtml]
    public string HtmlInput { get; set; }
}

...
[ValidateInput(false)]
public async Task<ActionResult> ControllerMethod(InputModel model)
{
}
 0
Author: Tarek Ayna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-29 06:30:18

Dodać następujący wiersz kodu:

GlobalFilters.Filters.Add(new ValidateInputAttribute(false));

Do metody Application_Start ().

 -1
Author: Vishnu Vikraman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-18 11:12:26