【问题标题】:How to get contents of CKEDITOR when postingback in asp.net在asp.net中回发时如何获取CKEDITOR的内容
【发布时间】:2019-10-14 15:46:12
【问题描述】:

我在我的 ASP.NET 项目中使用了 CKEDITOR,页面包含 asp:TextBoxTextMode="Multiline" 和一个链接按钮。 当我按下链接按钮时,我无法在回发中获取 TextBox 值.. 没有发生错误... 如何在服务器端获取内容?我正在考虑使用 jQuery 来跟踪 CK 内容的更改并将其复制到隐藏的 textarea..但似乎不正确。

我使用的是 CK v4.2 的 javascript 版本,而不是 .net 库版本。

补充:
在使用 CKEditor.zip 文件下载的示例中,您可以看到使用 $_POST 在服务器端获取文本很容易。
为什么在 ASP.NET 中不是?

更新:
使用 RadScriptManager、RadAjaxManager 和 RadAjaxPanel(来自 telerik)时会出现此问题。

【问题讨论】:

    标签: jquery asp.net ckeditor


    【解决方案1】:

    在 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 二进制文件的正确引用

    【讨论】:

      【解决方案2】:

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

      标题:

      <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;
      }
      

      【讨论】:

        【解决方案3】:

        这样的事情可能会有所帮助

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

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

        【讨论】:

        • 正如我所说“我使用的是 CK v4.2 的 javascript 版本,而不是 .net 库版本。”所以没有 CKeditor 类
        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

          你会得到数据试试下面的代码:

          var editorText = CKEDITOR.instances.txtinstruction.getData(); _msemailsetup.BodyMessage = editorText ;

          【讨论】:

            【解决方案6】:

            在触发回发事件之前调用该函数获取设置值

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

            txtinstruction 是文本框或文本区域的 id

            【讨论】:

            • 如果我没有找到其他解决方案,我会使用你的,我认为除了将数据从 CK 复制到隐藏控件之外,应该还有其他方法......
            • 在 PAGE 指令中设置 ValidateRequest="false"
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-12-13
            • 2014-10-14
            • 1970-01-01
            • 2012-10-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多