URL-адрес публикации AJAX не может быть разрешен (500), если строка содержит теги HTML
Я пытаюсь взять содержимое 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()
как выражение Watch показывает мне, что я получаю желаемое значение здесь: все, что я написал в текстовой области TinyMCE, обернуто в <p>
тег. Если я заменяю значение для "содержимого" каким-либо случайным статическим строковым значением без каких-либо тегов HTML, метод контроллера выполняется правильно.
Вот метод контроллера, который я пытаюсь использовать:
[HttpPost]
[Authorize(Roles = "Administrators")]
[ValidateInput(false)]
public JsonResult PostNewArticle(string title, HtmlString content, string articleType)
{
// do stuff
}
Обратите внимание, что тип данных для "содержимого" здесь - HtmlString... это было изменено с простой строки после некоторого исследования, которое в конечном итоге привело меня сюда. Но независимо от того, является ли она строкой или HtmlString, действие все равно не будет выполнено, если значение для содержимого содержит тег HTML.
Любая помощь приветствуется!
1 ответ
Это может помочь в кодировании URL вашего контента перед его отправкой
content: encodeURIComponent( tinyMCE.get('article-content').getContent() ),
и вернуть его обратно в реальную строку на стороне сервера.