Pregunta

Actualmente estoy trabajando en la implementación de un CMS para un sitio web.Tengo una experiencia mínima en el uso de javascript, jquery, C#, etc.Principalmente me ocupo de Java, SQL y C++.Mi pregunta es que tengo la instancia de CKEditor cargada en la página.Puedo cargar el HTML que he almacenado en mi base de datos en la ventana de CKEditor, pero no puedo recuperar los valores que cambié de CKEditor.

Predeterminado.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>

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

Lo he probado y sé que estoy escribiendo en la base de datos desde el método SaveButton_Click.Una cosa que he notado es que puedo mostrar un mensaje de alerta estático, como alert("message");pero no aparece ninguna ventana de alerta con ninguna de las líneas de mi código.Cualquier ayuda para configurar esto de modo que pueda escribir en mi base de datos usando la estructura de clases o simplemente para hacer que GetContents() funcione sería muy apreciada.

¿Fue útil?

Solución

En Page_Load deberías comprobar if (!Page.IsPostBack) antes de escribir el Text propiedad de la CKEditor control, de lo contrario, en cada publicación posterior (es decir.clic en el botón), el control tendrá el mismo valor de la base de datos.–

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);
           }
        }
     }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top