Как заставить Html.TextAreaFor () работать с планировщиком кендо data_bind = "html: ..."? - PullRequest
0 голосов
/ 20 сентября 2019

Я работаю с веб-приложением ASP.NET MVC и хочу предотвратить инъекции xss в текстовые поля.Таким образом, я проверяю, что все строковые значения, передаваемые для просмотра модели, закодированы в HTML.В веб-приложении я использую элемент управления планировщика Kendo UI, который использует пользовательское всплывающее окно редактирования события.В модели представления событий у меня есть свойство «Описание», которое должно связываться с текстовой областью описания с помощью атрибута привязки данных kendo при всплывающем окне события, как показано в коде ниже.

<div class="control">
  @Html.TextAreaFor(x => x.Description, new
    {
      data_bind = "value:description"
    })
</div>

Итак, в разметке это выглядит так:

<textarea class="k-textbox" cols="20" data-bind="value:description" id="Description" name="Description" rows="2"></textarea>

Однако текст отображается в текстовой области, как кодированный HTML.Я пытаюсь решить эту проблему.

Чтобы показать текст, декодированный в формате HTML, я попытался привязать данные к текстовой области следующим образом:

<div class="control">
  @Html.TextAreaFor(x => x.Description, new
    {
      data_bind = "html:description"
    })
</div>

В разметке это выглядит так:

<textarea class="k-textbox" cols="20" data-bind="html:description,value:Description" id="Description" name="Description" rows="2">&amp;lt;script&amp;gt;console.log(this)&amp;lt;/script&amp;gt;</textarea>

На самом деле текст не виден в текстовой области, а HTML-строка остается закодированной в теге textarea, поэтому я предполагаю, что привязка данных не работает должным образом.

Я ожидаю, что data_bind = "html: description" установит innerHTML textarea для отображения HTML-декодированного текста, но на самом деле я получаю либо HTML-кодированный текст, либо вообще никакого текста.Пожалуйста, помогите.

...