1

현재 웹 사이트 용 CMS를 구현 중입니다. Java, SQL 및 C++를 주로 다루는 등, javascript, jquery, C# 등을 사용하는 데는 최소한의 경험이 있습니다. 내 질문은 페이지에로드 된 CKEditor 인스턴스가 있습니다. 내 데이터베이스에 저장된 HTML을 CKEditor 창에로드 할 수 있지만 CKEditor에서 다시 변경 한 값을 가져올 수 없습니다.ASP.NET에 CKEditor 통합

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 방법에서 데이터베이스에 쓰고있는 것을 알고있다. 내가 알아챈 한 가지는 경고 ("메시지")와 같은 정적 경고 메시지를 표시 할 수 있다는 것입니다. 내 코드의 어느 한 라인으로도 경고 창이 나타나지 않습니다. 클래스 구조를 사용하여 데이터베이스에 쓸 수 있도록 설정하는 데 도움이되거나 GetContents()를 사용하는 것이 도움이 될 것입니다. 다시 모든 것들을 (예. 버튼 클릭)에, 그렇지 않으면 CKEditor 제어의 Text 속성을 쓰기 전에 if (!Page.IsPostBack)을 확인해야하여 Page_Load에서

답변

1

는 제어 데이터베이스에서 같은 값을가집니다. -

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

+0

@ tuckerjt07, SaveButton_Click에서 Page.IsPostBack은 항상 true입니다 (페이지가 버튼 클릭으로 게시 됨, 의미가 있습니까?). 또한, 대답을 받아 들여주세요. –

+0

그게 내가 생각한거야.하지만 그 안에 if 문을 넣기 전까지는 아무 이유없이 작동하지 않을거야. – tuckerjt07