URL-адрес публикации AJAX не может быть разрешен (500), если строка содержит теги HTML - PullRequest
2 голосов
/ 23 марта 2012

Я пытаюсь взять содержимое winyiwyg TinyMCE и отправить его в функцию контроллера для вставки базы данных.Эта настройка всегда будет отображать Не удалось загрузить ресурс: сервер ответил с состоянием 500 (Внутренняя ошибка сервера) со ссылкой на мой / admin / postnewarticle / route в качестве данных на консоли ошибок в Chrome:

$.ajax({
    url: '/admin/postnewarticle/',
    type: 'post',
    dataType: 'json',
    data: {
        content: tinyMCE.get('article-content').getContent(),
        title: $('#article-title').val(),
        articleType: $('#article-types option:selected').val()
    },
    success: function (result) {
        // success stuff
    }
});

Когда я отлаживаю в Chrome, размещение tinyMCE.get('article-content').getContent() в качестве выражения часов показывает мне, что я получаю желаемое значение здесь: все, что я написал в текстовой области TinyMCE, обернуто в тег <p>,Если я заменю значение для «содержимого» каким-либо случайным статическим строковым значением без каких-либо тегов HTML, метод контроллера выполняется правильно.

Вот метод контроллера, который я пытаюсь использовать:

[HttpPost]
[Authorize(Roles = "Administrators")]
[ValidateInput(false)]
public JsonResult PostNewArticle(string title, HtmlString content, string articleType)
{
    // do stuff
}

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

Любая и вся помощь приветствуется!

1 Ответ

2 голосов
/ 23 марта 2012

Это может помочь в кодировании URL вашего контента перед отправкой

content: encodeURIComponent( tinyMCE.get('article-content').getContent() ),

и вернуть его к настоящей строке на стороне сервера.

...