Интеграция CKeditor в ASP.NET
-
14-12-2019 - |
Вопрос
Я в настоящее время работаю над реализацией CMS для веб-сайта.У меня очень минимальный опыт использования JavaScript, jQuery, C # и т. Д. Я в основном имел дело с Java, SQL и C ++.Мой вопрос у меня есть экземпляр CKEDITOR, загруженный на странице.Я могу загрузить HTML, что я сохранил в своей базе данных в окне CKeditor, но я не могу получить значения, которые я изменил обратно из CKeditor.
по умолчанию .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 () для работы, будет очень цениться.
Решение
В 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);
}
}
}
.