ASP.NET MVC3, Html.TextArea для без кодировки? - PullRequest
6 голосов
/ 22 ноября 2010

Как я могу использовать Html.TextAreaFor без его кодирования?Я знаю, что это риск для безопасности, но у меня есть отдельный класс, который очищает любой текст.

Пример:

@Html.TextAreaFor (model => model.PostBodyText, 10, 100, 1)

Я планирую использовать его с TinyMCE.

С уважением, RaVen

ОБНОВЛЕНИЕ Я использую новый Razor View Engine.

Ответы [ 3 ]

8 голосов
/ 22 ноября 2010

Вам нужно будет бросить свои собственные:

<textarea cols="100" id="PostBodyText" name="PostBodyText" rows="10">
    @MvcHtmlString.Create(Model.PostBodyText)
</textarea>

Конечно, с точки зрения безопасности это может быть очень опасно, так как ваш сайт теперь уязвим для атак XSS.Поэтому вопрос в том, зачем иметь отдельный класс, который очищает весь текст, когда вы можете просто положиться на помощников HTML, которые сделают эту работу за вас?

1 голос
/ 26 марта 2012
1 голос
/ 22 ноября 2010

В качестве альтернативы вы можете использовать ValidateInput, как описано здесь . Пример в стиле MVC будет:

[ValidateInput(false)]
public ActionResult Method(){
     return View()
}

[ValidateInput(false)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Method(){
    // your stuff here
    RedirectToAction("index"); // or something 
}

Я думаю, что это больше MVC. Теперь ваш контроллер сообщает вам, что в этом методе контроллера есть проблема безопасности. Ваше представление может быть любым обычным представлением с использованием помощников html и т. Д. Обратите внимание, что это позволяет вводить все виды, не фильтруя. Он будет работать с TinyMCE, хотя .

// редактировать

woops, я вижу, вам нужно добавить

<httpRuntime requestValidationMode="2.0"/>

и webconfig в новых версиях MVC. Думаю, это не тот путь.

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