Интеграция CKEditor в ASP.NET - PullRequest
1 голос
/ 15 марта 2012

В настоящее время я работаю над внедрением CMS для веб-сайта.У меня очень минимальный опыт использования javascript, jquery, C # и т. Д. В основном я имею дело с Java, SQL и C ++.У меня вопрос: у меня на странице загружен экземпляр CKEditor.Я могу загрузить HTML, который я сохранил в своей базе данных, в окно CKEditor, но я не могу получить значения, которые я изменил, обратно из 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.Одна вещь, которую я заметил, это то, что я могу отображать статическое предупреждающее сообщение, такое как alert («message»);но ни одно окно предупреждения не всплывает вообще ни с одной из строк в моем коде.Будем весьма благодарны за любую помощь в настройке этого параметра, чтобы я мог либо писать в свою базу данных, используя структуру классов, либо просто заставить GetContents () работать.

1 Ответ

1 голос
/ 15 марта 2012

В Page_Load вы должны проверить if (!Page.IsPostBack) перед записью свойства Text элемента управления CKEditor, в противном случае при каждом возвращении сообщения (т. Е. При нажатии кнопки) элемент управления будет иметь одно и то же значение из базы данных.-

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