Ответ 1
Нет, это была проблема в MVC 1 + xVal. В MVC 2 валидация работает как (и нет необходимости в xVal больше) - Alex42
Похоже, бот продолжает толкать его наверх. Не могли бы вы пометить ответ как принятый, чтобы он знал?
Я хотел бы перехватить "<" символа в поле формы с помощью валидатора регулярных выражений. Я опишу проблему в 3 этапа:
Шаг 1. Когда я пытаюсь отправить форму с полем, содержащим "<" Я получаю "потенциально опасный запрос..." - как и ожидалось в ASP.NET.
Шаг 2. Чтобы избежать ASP.NET RequestValidation, я украшаю свой метод Update в контроллере "[ValidateInput (false)]".
Он работает как ожидалось - теперь я могу опубликовать сообщение "<" символ без ошибок.
Шаг 3. Я использую xVal с DataAnnotations. Например, [Требуется] или [StringLength (255)] работает должным образом.
НО, когда я использую: [RegularExpression ( "^ [^ < > ] * $", ErrorMessage = "Специальные символы не разрешены." )], Я снова получаю ошибку "Потенциально опасный запрос..." , несмотря на директиву [ValidateInput (false)].
Что происходит? Есть ли более простой способ для regex validaton, но с [ValidateInput (false)] на месте? Конечно, я хотел бы иметь код проверки в модели, а не в контроллере.
Нет, это была проблема в MVC 1 + xVal. В MVC 2 валидация работает как (и нет необходимости в xVal больше) - Alex42
Похоже, бот продолжает толкать его наверх. Не могли бы вы пометить ответ как принятый, чтобы он знал?
Я использую xVal и nhibernate.validator, и я попытался воспроизвести это поведение, но поскольку валидатор привязан к стороне клиента, я не смог получить значение прошлой проверки на стороне клиента. когда я отключил javascript, он получил проверку на стороне сервера и был пойман с помощью проверки правильности выражения.
Я попробовал то же самое с использованием атрибутов проверки аннотаций данных и привязки к модели, и это тоже пропустило.
должно произойти что-то еще, вызывающее ошибку. Извините, я не могу быть более полезным!
Попробуйте выполнить проверку с помощью простого правила с помощью этого метода. Это может по крайней мере исключить xVal из уравнения. Если проблема сохранится, я бы предположил, что она связана с:
<
, когда он не будетЕсли это просто поле, вы можете просто написать программу для поиска символа '< или > 'и удалите его. вы можете достичь этого, используя подстроку. надеюсь, что это поможет
Я предполагаю, что статический метод Escape()
разрешит это для вас.
Regex r = new Regex(Regex.Escape(expression));
Поместите эту строку в web.config
<httpRuntime requestValidationMode="2.0" />
Это изменение в ASPNET 4.0