2016-08-25 2 views
-1

Я использую Редактор форматированногопотенциально опасное значение Request.Form было обнаружено от клиента в осины MVC

Он показывает мне эту ошибку

Вернуться Null t.FullText = HttpContext.Request["Editor1"];

Pic

Просмотр :

<div class="name"> 
    <label id="lbl-full-text">FullText : </label> 
    @* @Html.TextAreaFor(model => model.FullText)*@ 
    <div name="FullText" style="margin-right: 109px; margin-top: -34px;"> 
     @Html.Raw(ViewBag.Editor) 
    </div> 
</div> 

Управление: Лер:

[HttpPost, ValidateInput(false)] 
public ActionResult CreateNews(Tbl_News t, HttpPostedFileBase pic, int Category = 0) 
{ 
    string content = Request.Unvalidated["Editor1"]; 
    . 
    . 
    . 
    t.FullText = HttpContext.Request["Editor1"]; 

} 

MetaData:

[AllowHtml] 
public string FullText { get; set; } 

Как я могу решить эту проблему?

+3

Возможный дубликат [потенциально опасное значение Request.Form было обнаружено у клиента] (http://stackoverflow.com/questions/81991/a-potential-dangerous-request-form-value-was-detected-from -the-client) – Jonesopolis

+0

Возможный дубликат [Разрешить пользователю вводить HTML в ASP.NET MVC - ValidateInput или AllowHtml] (http://stackoverflow.com/questions/3621272/allow-user-to-input-html-in- asp-net-mvc-validateinput-or-allowhtml) –

+0

№. Я делаю этот шаг, но его не работает – Kianoush

ответ

0

Есть несколько способов справиться с этим. Не все, на мой взгляд, лучший подход.

Здесь, вероятно, худшее

Shotgun подход

<httpRuntime requestValidationMode="2.0"/> 

Чуть лучше в том, что вы выключите его на определенной странице

<configuration> 
     <system.web> 
      <pages validateRequest="false" /> 
     </system.web> 
</configuration> 

Здесь вы можете выключить его для конкретного раздел вашего сайта

<configuration> 
... 
<location path="MyFolder/.aspx"> 
<system.web> 
<pages validateRequest="false" /> 
<httpRuntime requestValidationMode="2.0" /> 
</system.web> 
</location> 
... 
</configuration> 

Другой подход, если вы используете MVC, чтобы добавить атрибут входной VALIDATE к вашему действию:

[ValidateInput(false)] 

Это было некоторое время, так как я должен был сделать это в любом из сайтов, которые я создал, но я Думаю, они все еще работают.

+0

Я редактирую вопрос. см. – Kianoush

0

использование System.Web.HttpContext.Current.Request.Unvalidated.Form["Editor1"] отключение проверки ввода для всей страницы или всех страниц - плохая идея!

0

Я наконец сделал эту работу, перехватывая отредактированное значение в JQuery, прежде чем AJAX проводка и избежать значений, как:

$("#Textareaeditor").val(escape(-get value from editor-); 

Затем на стороне сервера вы просто сделать:

model.property = URI.unEscapeDataString(model.property). 

Это работает для мда когда ничего не сделал, и я не хотел устанавливать requestValidationMode=2.0.