我在我的ASP.NET项目中使用了CKEDITOR,该页面包含asp:TextBox
TextMode="Multiline"
和链接按钮。
当我按下linkbutton时,我无法在回发中获得TextBox值。
没有错误发生......
如何在服务器端获取内容?我想用jQuery跟踪CK内容的变化并将其复制到隐藏的textarea ..但似乎不对。
我使用的是 CK v4.2 的javascript版本,而不是.net库版本。
增加:
在使用CKEditor.zip文件下载的示例中,您可以看到使用$ _POST在服务器端获取文本很容易。
为什么在ASP.NET中没有?
更新
使用RadScriptManager,RadAjaxManager和RadAjaxPanel(来自telerik)时会出现此问题。
答案 0 :(得分: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 :(得分: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;
}
答案 2 :(得分:0)
这样的事情可能会有所帮助
string newText = ((CKedit.CKeditor)(e.Item.FindControl("txtBox"))).Value;
否则使用updatepanel将其值保留在回发
答案 3 :(得分:0)
我的一位同事通过在初始化时设置setup
属性来解决这个问题:
setup: function (ed) {
ed.on('change', function (e) {
ed.save();
});
}
当更改事件被调用时,这将把内容保存到编辑器。
答案 4 :(得分:0)
您将获得下面的代码尝试的数据:
var editorText = CKEDITOR.instances.txtinstruction.getData(); _msemailsetup.BodyMessage = editorText;
答案 5 :(得分:-1)
在触发回发事件之前调用此函数设置值
function setValue()
{
$("#txtinstruction").val(CKEDITOR.instances.txtinstruction.getData());
}
txtinstruction
是textbox或textarea的ID