2012-03-15 63 views
1

我目前正在为网站实施CMS。我使用javascript,jquery,C#等方面的经验非常少。我主要处理Java,SQL和C++。我的问题是我有CKEditor实例加载在页面上。我能够将我存储在我的数据库中的HTML加载到CKEditor窗口中,但是我无法获得我从CKEditor中更改的值。将CKEditor集成到ASP.NET中

Default.aspx的

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" 
CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<%@ Register Assembly="CKEditor.NET" Namespace="CKEditor.NET" TagPrefix="CKEditor" %> 

<asp:Content ID="Head1" runat="server" ContentPlaceHolderID="head" > 
<%--Javascript funciton for Display Contents button--%> 
<script type="text/javascript"> 
    function GetContents() { 
     // Display the value of CKEditor into an alert 
     alert(CKEDITOR.instances.CKEditor1.getData()); 
     //Have also tried alert(CKEDITOR.instances[CKEditor1].getData()); 
    } 
</script> 
</asp:Content> 
<asp:Content ID="form1" runat="server" ContentPlaceHolderID="ContentPlaceHolder1"> 
<CKEditor:CKEditorControl ID="CKEditor1" runat="server"> 
</CKEditor:CKEditorControl> 
<%--Button that executes the command to store updated data into database--%> 
<asp:Button ID="SaveButton" runat="server" Text="Save Changes" 
    onclick="SaveButton_Click" /> 
<button type="button" onclick="GetContents()">Display Contents</button> 

</asp:Content> 

Default.aspx.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

public partial class _Default : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
     //Retrieve HTML 
     HomePageHTML hp = HomePageHTMLAccess.GetHomPageHTML(); 
     //Does HTML exist? 
     if (hp.HTML != null) 
     { 
      PopulateControls(hp); 
     } 
    } 

    //Method to load html from database into webpage 
    private void PopulateControls(HomePageHTML hp) 
    { 
     //Display html 
     CKEditor1.Text = hp.HTML; 

    } 
    //Method to save the updated html into the database 
    protected void SaveButton_Click(object sender, EventArgs e) 
    { 
     string text1 = CKEditor1.Text; 
     HomePageHTMLAccess.UpdateHomePageHTML(text1); 
    } 
} 

我已经测试过,知道我写从SaveButton_Click方法的数据库。我注意到的一件事是,我可以显示静态警报消息,例如alert(“message”);但是我的代码中没有任何一行会弹出警告窗口。 任何帮助完成此设置,以便我可以使用类结构写入我的数据库,或只是让GetContents()工作,将不胜感激。

回答

1

在Page_Load中,你应该写CKEditor控制的Text属性之前检查if (!Page.IsPostBack),否则,对每一个岗位背(即按一下按钮),控制将有来自数据库相同的值。 -

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!Page.IsPostBack) 
     { 
      //Retrieve HTML 
      HomePageHTML hp = HomePageHTMLAccess.GetHomPageHTML(); 
      //Does HTML exist? 
      if (hp.HTML != null) 
      { 
       PopulateControls(hp); 
      } 
     } 
    } 
+0

非常感谢你阿德里安,它像一个魅力工作。如果其他人对SaveButton_Click方法有这个问题,请添加一个if(Page.IsPostBack),但不带感叹号,并关闭其中的所有代码,它将起作用。 – tuckerjt07 2012-03-15 17:26:27

+0

@ tuckerjt07,在SaveButton_Click上,Page.IsPostBack将始终为真(通过按钮单击回传页面,这是否合理?)。另外,请接受答案。 – 2012-03-15 17:59:58

+0

这就是我的想法,但由于某种原因,直到我在那里放置if语句才会起作用。 – tuckerjt07 2012-03-16 05:48:05