CKEditor Необработанные данные в контроллер - PullRequest
0 голосов
/ 12 февраля 2012

Я использую CKeditor в приложении MVC 3.

Сейчас мне нужно сохранить текст с HTML-тегами в БД, проблема в том, что метод Ckeditors GetData () возвращает необработанный формат данных (http://docs.cksource.com/ckeditor_api/symbols/CKEDITOR.editor.html#getData)

Мне нужен способ сделать этот необработанный формат обычной строкой с тегами HTML

Вид:

@using (Html.BeginForm()) {
    @Html.ValidationSummary(true)
    <fieldset>
        <legend>TextEditionViewModel</legend>


        @Html.DropDownListFor(model=>model.Id, Model.Texts)
        <div class="editor-label">
            @Html.LabelFor(model => model.Text)
        </div>
        <div class="editor-field">

            @Html.TextAreaFor((model => model.Text), new { @Id = "editor1" })
            @Html.ValidationMessageFor(model => model.Text)
        </div>

        <script type="text/javascript">
            CKEDITOR.replace('editor1');
            </script>


        <script type="text/javascript">

            var editor_data = CKEDITOR.instances['editor1'].getData();
            var url = '@Url.Action("EditText1", "Admin")';
            var data = { CommentText: editor_data };

            function Save() {
               alert(editor_data);
                $.post(url, { CommentText: editor_data }, function (result) {

                });

            };

            $('#Id').change(function () {
                var selectedText = $(this).val();
                if (selectedText != null && selectedText != '') {
                    $.getJSON('@Url.Action("Text","Admin")', { Id: selectedText }, function (text) {
                        CKEDITOR.instances['editor1'].setData(text);

                    });

                }
            });
</script>
    </fieldset>
     <p>
            <input type="button" value="Save"  onclick="Save()"/>
        </p>
}

Если для editor_data задана обычная строка «Текст», все работает!

Контроллер

    public ActionResult EditText1(String CommentText)
    {

        return null;
    }

1 Ответ

1 голос
/ 12 февраля 2012

Вы можете украсить действие вашего контроллера с помощью атрибута [ValidateInput], чтобы разрешить размещение тегов HTML, которые по умолчанию не разрешены ASP.NET:

[HttpPost]
[ValidateInput(false)]
public ActionResult EditText1(string commentText)
{
    return null;
}

UPDATE:

Проблема связана с тем, что переменная editor_data недоступна в методе Save.

Вы можете сделать это:

<script type="text/javascript">
    function Save() {
        var editor_data = CKEDITOR.instances['editor1'].getData();
        var url = '@Url.Action("EditText1", "Admin")';
        var data = { CommentText: editor_data };
        $.post(url, data, function (result) {

        });
    }

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