ASP.NET MVC: ПОЧЕМУ ValidateInput (false) работает только тогда, когда действие обратной передачи и контроллер явно указаны в форме? - PullRequest
0 голосов
/ 28 июня 2010

Целые выходные я изучал, как использовать TinyMCE с ASP.NET MVC. Я получаю сообщение об ошибке XSS (« Потенциально опасное значение Request.Form обнаружено клиентом (...) »).

Чтобы справиться с этим, мне посоветовали использовать атрибут [ValidateInput (false)] , чтобы снять проверку, но безуспешно. До тех пор, пока я случайно не сделал обратную передачу другому методу действия (то есть не тому, который отображал представление, содержащее элемент управления TextArea). поэтому я должен указать как Действие, так и контроллер. ЭТО СРАБОТАЛО. Поэтому я попытался явно объявить BeginForm для первого случая, затем ЭТО РАБОТАЛО СНОВА.

Вопрос ПОЧЕМУ

<%Using(Html.BegiForm()){%>

или

<%Using(BeginForm("WriteArticle"))%>

оба не работали.

<%Using(Html.BeginForm("WriteArticle", "ArticleManagement")){%>

Этот работал.

Итак, почему не известная " Конвенция о конфигурации " не работает?

EDIT

[ValidateInput(false)]
public class ArticleManagementController:Controller
{     
  protected override void OnActionExecuting(ActionExecutingContext filterContext)
  {
    //Here model is created and updated
  }
  public ActionResult WriteArticle()
  {
    //Here's the method that displays the View containing the TinyMCE editor
  }

  //There are more action methods
}

Спасибо за помощь.

1 Ответ

1 голос
/ 29 июня 2010

Html.BeginForm() делает одну вещь. ИТ генерирует HTML. Таким образом, если одна перегрузка работает, а другая - нет, то генерирует другой HTML . Просмотр источника отображаемой страницы. Они будут разными. Скорее всего, это связано с вашей маршрутизацией или путем выполнения представления, но трудно убедиться, не увидев HTML и ваш код. Важный момент заключается в следующем: когда ваш сервер реагирует по-другому, вы почти наверняка отправляете ему другой запрос. View Source и панель Firebug Net - это два инструмента, с которых вы должны начать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...