Question

Je travaille actuellement sur la mise en œuvre d'un CMS pour un site Web.J'ai très peu d'expérience en utilisant javascript, jquery, C#, etc.Je m'occupe principalement de Java, SQL et C++.Ma question est que l'instance CKEditor est chargée sur la page.Je peux charger le HTML que j'ai stocké dans ma base de données dans la fenêtre CKEditor, mais je ne parviens pas à récupérer les valeurs que j'ai modifiées hors de CKEditor.

Par défaut.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>

Par défaut.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);
    }
}

J'ai testé et je sais que j'écris dans la base de données à partir de la méthode SaveButton_Click.Une chose que j'ai remarquée est que je peux afficher un message d'alerte statique, tel que alert("message");mais aucune fenêtre d'alerte n'apparaît avec l'une ou l'autre des lignes de mon code.Toute aide pour configurer cette configuration afin que je puisse soit écrire dans ma base de données en utilisant la structure de classe, soit simplement faire fonctionner GetContents() serait grandement appréciée.

Était-ce utile?

La solution

Dans Page_Load, vous devriez vérifier if (!Page.IsPostBack) avant d'écrire le Text propriété du CKEditor contrôle, sinon, sur chaque message de retour (c.-à-d.cliquez sur le bouton), le contrôle aura la même valeur que celle de la base de données.–

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);
           }
        }
     }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top