Ошибка "потенциально опасное значение Request.Form..", когда ModelState.IsValid имеет значение false

В одном из наших приложений ASP.NET MVC мы используем FCKEditor, чтобы позволить пользователям вводить форматированный текст. Чтобы отключить проверку в действиях контроллера, мы устанавливаем атрибут

[ValidateInput(false)]

Пользователи могут сохранять и изменять форматированный текст до тех пор, пока на странице нет ошибок проверки бизнеса.

Если какая-либо из бизнес-проверок завершается неудачно и для ModelState.IsValid задано значение false, при отображении страницы возникает следующее исключение. Может кто-нибудь сообщить мне, как решить эту проблему?

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

Вот код

    [ValidateInput(false)]
    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Schedule(FormCollection formValues)
    {
      // some code
      if (ModelState.IsValid)
        {
            //do something here...
        }
        else
        {               
            return View(programDetails);
        }


     }

    //// View code that render the fckeditor text area
    <%= Html.TextArea("Programme_Overview", Model.Programme.Overview, new { row = 7 })%>

4 ответа

Только что это обрезать, исправить было обновить конфигурационный файл fck fckconfig.js

FCKConfig.HtmlEncodeOutput = false;

должно быть

FCKConfig.HtmlEncodeOutput = true ;

Скорее всего, какой-то HTML-вывод из вашего FCKEditor будет каким-то образом отправлен.

Вы можете попробовать отключить проверку:

public MyController
{
    [ValidateInput (false)]
    public ActionResult MyAction ()
    {
    }
}

Просто добавьте следующее к вашему действию:

[ValidateInput(false)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult SomeAction() {}

Я предполагаю, что этот проект был перенесен из RTM-проекта до 1.0.

Оригинальный ASP.NET имеет проверку "опасного ввода" на уровне страницы, которую вы запускаете. Мы отключили его для всей системы, изменив файл Web.config в папке Views, но я точно не помню, когда мы внесли это изменение. Если ваш проект предшествует этому изменению, у вас не будет этого параметра в вашем файле Web.config в папке Views.

Таким образом, вы можете создать новый проект MVC и посмотреть файл Web.config, чтобы увидеть, какие настройки вы можете скопировать. Вы также можете отключить это постранично, если хотите.

http://www.asp.net/learn/whitepapers/request-validation/

Другие вопросы по тегам