현재 웹 사이트 용 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에서
대단히 감사합니다. 애드리안은 매력처럼 작동했습니다. SaveButton_Click 메서드에 대해이 문제가있는 경우 느낌표가없는 if (Page.IsPostBack)를 추가하고 코드를 모두 닫으면 작동합니다. – tuckerjt07
@ tuckerjt07, SaveButton_Click에서 Page.IsPostBack은 항상 true입니다 (페이지가 버튼 클릭으로 게시 됨, 의미가 있습니까?). 또한, 대답을 받아 들여주세요. –
그게 내가 생각한거야.하지만 그 안에 if 문을 넣기 전까지는 아무 이유없이 작동하지 않을거야. – tuckerjt07