2013-09-04 2 views
1

Я использую CKEditor вместе с ASP.NET MVC, но есть очень странная проблема: если я отформатирую некоторый текст (например, примените смелость, сделайте это курсивом или создайте список), когда есть некоторая ошибка, и содержимое должно быть отправлено обратно в текстовое поле, оно отображается как текст HTML - «ul li» и т. д. вместо того, чтобы снова стилизоваться (жирный, курсив и т. д.).Проблема с CKEditor при отображении вывода

Я применил некоторые опции в конфигурации:

config.htmlEncodeOutput = true; // to avoid text being interpreted as attack 

config.enterMode = CKEDITOR.ENTER_BR; // in order not to place tags arround the text 

config.basicEntities = false; // do display spaces as they are instead of   and so on... 

Я попробовал некоторые встроенные функции в MVC как Server.HtmlDecode и HttpUtility.Decode, но ничего не похоже на работу. Также принимаются решения с другими редакторами, которые отлично работают с MVC.

Вот файл .cshmtl:

@{ 
    ViewBag.Title = "CkEditor"; 
} 

@model HtmlTextEditorsDemos.Models.SimpleModel 

<h2>CkEditor</h2> 

<script src="~/Scripts/ckeditor.js"></script> 

@using (Html.BeginForm()) 
{ 
    @Html.TextAreaFor(x => x.Text, new { @class = "ckeditor" }) 
    <input type="submit" value="send" /> 
} 

В методе действий я ничего не делать, но вернуть данные снова только для целей тестирования:

[HttpPost] 
public ActionResult Index(SimpleModel model) 
{ 
    //model.Text = Server.HtmlDecode(model.Text); 
    return View(model); 
} 

Класс SimpleModel просто тест класс модели с только 1 свойством - текст.

+0

Пожалуйста, включите код, как вы заселять эту область текста. Скорее всего, вам понадобится что-то вроде «Html.Raw». – MikeSmithDev

+0

См. Мой обновленный пост. –

+0

Да, Html.Raw выполнит работу (но только если она должна отображаться в элементе div или абзаце или другом подобном элементе), но проблема в том, что значение в текстовом поле не может быть IHtmlString, оно может быть только строковое значение. Я пробовал Html.Raw (Model.Text) .ToHtmlString(), но напрасно. –

ответ

-1

Вы можете попробовать это

@foreach (var item in Model) 
{ 
    <tr> 

     <td> 
      @Html.DisplayFor(modelItem => item.Title) 
     </td> 
     <td> 
      @{ 
    string description = Server.HtmlDecode(item.Description); 
      } 
      @Html.Raw(description) 

     </td> 
     <td> 
      @Html.DisplayFor(modelItem => item.Note) 
     </td> 
     <td> 
      <img src="~/img/Uploads/@item.Pic" width="150" height="120" /> 
     </td> 

    </tr> 
} 
Смежные вопросы