2

我正在尝试获取 TinyMCE 所见即所得的内容并将其发布到控制器函数以进行数据库插入。此设置将始终显示加载资源失败:服务器响应状态为 500(内部服务器错误),引用我的 /admin/postnewarticle/ 路由作为 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 中调试时,作为 Watch Expression 放置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 标记,则操作仍然不会执行。

任何和所有的帮助表示赞赏!

4

1 回答 1

2

在发送内容之前对内容进行 url 编码可能会有所帮助

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

并将其转回服务器端的真实字符串。

于 2012-03-23T08:37:10.743 回答