【发布时间】:2017-09-18 08:25:49
【问题描述】:
我在 ASP.NET MVC 应用程序中有一个 CKEditor,我无法附加或发布 textarea 的 updated 值,如下所示:
<textarea name="Description" id="Description" rows="10" cols="80">
This is my textarea to be replaced with CKEditor.
</textarea>
<script>
CKEDITOR.replace('Description',
{
filebrowserBrowseUrl: '/....',
filebrowserUploadUrl: '/....'
});
</script>
function insert(event) {
event.preventDefault();
var desc = CKEDITOR.instances['Description'].getData(); //I obtain the updated text at this line
var formdata = $('#frmCreate').serialize();
formdata.append("Description", desc); //!!! This is not working !!!
$.ajax({
type: "POST",
url: '@Url.Action("Insert", "Blog")',
cache: false,
dataType: "json",
data: formdata,
success: function (response, textStatus, XMLHttpRequest) {
$('#result').html(data);
}
});
};
我可以传递 textarea 的初始值(模型的描述属性),但在进行任何更改后,数据仍保持初始值。关于如何将描述字段传递给控制器的任何想法???
【问题讨论】:
-
你总是可以使用
$('#Description').val(data);然后var formdata = $('#frmCreate').serialize(); -
附带说明一下,您有
dataType: "json",,但似乎返回了html,这会引发异常。 -
@StephenMuecke 你每次都摇滚,非常感谢!.. 我需要澄清的一点>>> 1) 在这种情况下我可以使用 $('#property').val(dataValue); 为了将 dataValue 附加到我的属性而不是 append 方法??? 2) 我使用 [HttpPost, ValidateInput(false)] 来修复内部服务器错误并正常工作。但是,当为 dataType 尝试“html”或“text”时,问题并没有解决。有什么想法吗?
-
你没有展示控制器方法,所以有点难以评论第 3 项。对于第 2 项,最好在
Description属性上使用[AllowHtml]属性。 -
对于第 1 项,我不熟悉 CKEDITOR 所以不知道为什么它不会自动更新输入的值,但请注意,如果你想“附加”一些东西到 @ 的输出987654329@ 然后你可以使用
$.param(参考this answer。但是在你的情况下这不起作用,因为输出中只有Description的第一个值将被DefaultModelBinder绑定
标签: javascript jquery asp.net asp.net-mvc ckeditor