主题: ASP.net使用了两层母版页,内容页无法取KindEditor的值,请问如何操作?
作者: Ayong, 发布日期: 2012-08-23 21:29:29, 浏览数: 3400

ASP.net使用了两层母版页,内容页无法取KindEditor的值,请问如何操作?

<%@ Page Title="" Language="C#" MasterPageFile="~/YHJDongTai/YHJDongTai.master" AutoEventWireup="true"
    CodeFile="XinWenFaBu.aspx.cs" Inherits="YHJDongTai_Default" ValidateRequest="false" %>

<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder2" runat="Server">
    <meta charset="utf-8" />
   
    <link rel="stylesheet" href="../kindeditor/themes/default/default.css" />
 <link rel="stylesheet" href="../kindeditor/plugins/code/prettify.css" />
 <script charset="utf-8" src="../kindeditor/kindeditor.js"></script>
 <script charset="utf-8" src="../kindeditor/lang/zh_CN.js"></script>
 <script charset="utf-8" src="../kindeditor/plugins/code/prettify.js"></script>
 <script>
     KindEditor.ready(function (K) {
         var editor1 = K.create('#content1', {
             cssPath: '../kindeditor/plugins/code/prettify.css',
             uploadJson: '../kindeditor/asp.net/upload_json.ashx',
             fileManagerJson: '../kindeditor/asp.net/file_manager_json.ashx',
             allowFileManager: true,
             afterCreate: function () {
                 var self = this;
                 K.ctrl(document, 13, function () {
                     self.sync();
                     K('form[name=example]')[0].submit();
                 });
                 K.ctrl(self.edit.doc, 13, function () {
                     self.sync();
                     K('form[name=example]')[0].submit();
                 });
             }
         });
         prettyPrint();
     });

 

作者: lsw, 发布日期: 2012-12-22 18:50:26

这个问题已经有很长时间没人回答了。

在应用了模板页的Web页面确实取不到value值。不只是取不到值,在应用了模板页的Web页面的后台代码中根本找不到编辑器对象。


解决思路:

1、删除编辑器正文嵌入代码。即删除如下代码:

<textarea name="content" style="width:700px;height:200px;visibility:hidden;">KindEditor</textarea>

2、创建一个<asp:TextBox>对象,把ID改成content,如下代码:

<asp:TextBox ID="content" runat="server" TextMode="MultiLine"></asp:TextBox>

这里需要注意的是该对象运行后再页面的HTML代码中,它的名字并不是content。运行页面,在页面源码中找到该控件运行后的名字,如可能是ctl00$ContentPlaceHolder1$content。


3、把嵌入编辑器脚本的这一行中的控件名字修改成<asp:TextBox>对象运行后的名字。如:

editor = K.create('textarea[name="content"]', {

修改成:

editor = K.create('textarea[name="ctl00$ContentPlaceHolder1$content"]', {


4、按照上述方法修改后,就可在后台代码中用如下代码取到编辑器的value:

this.Label1.Text = this.content.Text;


回复
作者: 安静燊, 发布日期: 2014-06-13 20:47:25

之前我也是和你同样的问题

下面是我的代码

<script charset="utf-8" src="../editor/kindeditor.js"></script>
<script charset="utf-8" src="../editor/lang/zh_CN.js"></script>
<script>
    KindEditor.ready(function (K) {
        var editor1 = K.create('#outlookcontent_outsidecontent_leftcontent_text', {
            cssPath: '../editor/plugins/code/prettify.css',
            uploadJson: '../editor/asp.net/upload_json.ashx',
            fileManagerJson: '../editor/asp.net/file_manager_json.ashx',
            allowFileManager: true,
            afterCreate: function () {
                var self = this;
                K.ctrl(document, 13, function () {
                    self.sync();
                    K('form[name=form1]')[0].submit();
                });
                K.ctrl(self.edit.doc, 13, function () {
                    self.sync();
                    K('form[name=form1]')[0].submit();
                });
            }
        });
        prettyPrint();
    });
</script>


... ... ... ...

<textarea id="text" runat="server" style=" width:100%" cols="30" rows="20"></textarea>


我用了两层母版页,结果是能显示kindeditor并且textarea可以从数据库获取值并显示

但是在textarea中输入的值却不能保存

在非母版页中没有这个问题,后来网上搜索和几篇文章发现了解决方法:

KindEditor.ready(function (K) {
        var editor1 = K.create('#outlookcontent_outsidecontent_leftcontent_text', {
            cssPath: '../editor/plugins/code/prettify.css',
            uploadJson: '../editor/asp.net/upload_json.ashx',
            fileManagerJson: '../editor/asp.net/file_manager_json.ashx',
            allowFileManager: true,
            afterBlur:function(){this.sync();},
            afterCreate: function () {
                var self = this;
                K.ctrl(document, 13, function () {
                    self.sync();
                    K('form[name=form1]')[0].submit();
                });
                K.ctrl(self.edit.doc, 13, function () {
                    self.sync();
                    K('form[name=form1]')[0].submit();
                });
            }

afterblur是说失去焦点之后将kindeditor的值同步给textarea

加上这句之后我测试可以通过了

回复
发表新帖 发表回复