如何在ASP.NET中回传CKEDITOR的内容

4
我在我的ASP.NET项目中使用了CKEDITOR,页面包含asp:TextBox,属性为TextMode="Multiline",还有一个linkbutton。 当我点击linkbutton时,无法在postback中获取TextBox的值。 没有出现任何错误... 如何在服务器端获取内容?我想使用jQuery来跟踪CK内容的更改并将其复制到隐藏的textarea中...但似乎不正确。
我正在使用javascript版本的CK v4.2,而不是.net库版本。
附加信息: 在下载的CKEditor.zip文件中附带的示例中,可以轻松地使用$_POST在服务器端获取文本。 为什么在ASP.NET中不能?
更新: 当使用RadScriptManager、RadAjaxManager和RadAjaxPanel(来自telerik)时,会出现此问题。
7个回答

2
在ASPX页面上设置CKEditor控件如下:
<CKEditor:CKEditorControl ID="CKEditor1" runat="server"/>

在代码后端页面上:
protected void Page_Load(object sender, EventArgs e)
{
    if (Page.IsPostBack)
    {
        string text1 = CKEditor1.Text;
        string text2 = CKEditor1.Value;
        ...
    }
}

请记得添加/包含适当的参考文献到CKEditor二进制文件中


1
我遇到了同样的问题。我在一个简单的页面上测试了 LinkButton 和 Button。问题是 LinkButton 不能直接提交表单。它呈现为链接并调用 __doPostBack 事件,因此这对 CKEditor 是个问题。我尝试按照 Nirmal 的建议设置 textarea,但也没有起作用。以下是我的解决方法。

页眉:

<script type="text/javascript">
    $(document).ready(function () { $("#tBody").ckeditor(); });

    function setValue() {
        $("#hfBody").val(CKEDITOR.instances.tBody.getData());
    }
</script>

在表单内部:
<asp:TextBox ID="tBody" runat="server" TextMode="MultiLine"/>
<asp:HiddenField ID="hfBody" runat="server" />
<asp:LinkButton ID="btnSend" Text="Link" runat="server" OnClick="X_Click"
OnClientClick="setValue()"/>

C#
protected void X_Click(object sender, EventArgs e)
{
    divResult.InnerHtml = hfBody.Value;
    tBody.Text = hfBody.Value;
}

0
HtmlTextArea rtf = item.FindControl("ckcontent") as HtmlTextArea;

3
您的答案可以通过添加有关代码的功能和如何帮助OP的更多信息来改善。 - Tyler2P

0

我的一位同事通过在初始化tinymce时设置setup属性来解决了这个问题:

setup: function (ed) {
    ed.on('change', function (e) {
        ed.save();
    });
}

当更改事件被调用时,这将保存内容到编辑器。


0
你将会得到下面代码尝试的数据:
var editorText = CKEDITOR.instances.txtinstruction.getData(); _msemailsetup.BodyMessage = editorText;

0

类似这样的代码可能会有所帮助

string newText = ((CKedit.CKeditor)(e.Item.FindControl("txtBox"))).Value;

否则使用UpdatePanel在回发时保留其值


1
正如我所说的,“我正在使用CK v4.2的JavaScript版本,而不是.NET库版本。”因此没有CKeditor类。 - Dabbas

-1

在触发 postback 事件之前调用此函数以设置值

function setValue() 
{
     $("#txtinstruction").val(CKEDITOR.instances.txtinstruction.getData());
}

txtinstruction 是文本框或文本域的 ID。


如果我找不到其他解决方案,我会使用你的方法,但我认为除了从CK复制数据到隐藏控件之外,应该还有其他方法。 - Dabbas
在PAGE指令中添加ValidateRequest="false" - Nirmal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接