在AJAX.NET中使用FCKEditor不能读取FCKEditor内容的解决方法

aspx文件如下:

<%@ Page Language="C#" MasterPageFile="~/Blog/Blogger/Admin/Admin.Master" ValidateRequest="false" AutoEventWireup="true" CodeBehind="AddArticle.aspx.cs" Inherits="Blog.Blogger.Admin.Article.AddArticle" Title="Blog" %>
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="asp" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>

<%@ Register TagPrefix="FCKeditorV2" Namespace="FredCK.FCKeditorV2" Assembly="FredCK.FCKeditorV2" %>

<asp:Content ID="Content1" runat="server" ContentPlaceHolderID="phBody">

<form id="MainForm" runat="server">

<script language="javascript"> function FCKUpdateLinkedField(id) { try { if(typeof(FCKeditorAPI) == "object") {      FCKeditorAPI.GetInstance(id).UpdateLinkedField();
}
}

catch(err) { }

</script>

<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePartialRendering="true" EnableScriptGlobalization="true" EnableScriptLocalization="True"> </asp:ScriptManager> <asp:Panel ID="updating" runat="server" BorderWidth="0" BorderStyle="solid" style="z-index: 1;">

<asp:UpdateProgress ID="UpdateProgress1" runat="server"> <ProgressTemplate> <DIV style="BORDER-RIGHT: #dcbe6e 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #dcbe6e 1px solid; PADDING-LEFT: 5px; BACKGROUND: #ffffbf; LEFT: 5px; PADDING-BOTTOM: 5px; BORDER-LEFT: #dcbe6e 1px solid; WIDTH: 218px; BOTTOM: 5px; PADDING-TOP: 5px; BORDER-BOTTOM: #dcbe6e 1px solid; POSITION: absolute"> <IMG alt="??¨¦?o¨°" src="/Blog/Blogger/Admin/Album/Images/loading.gif" />¨¨???¡À¡ê¡ä??D,??¨¦?o¨°<input type="button" id="abortButton" onclick="cancelRequest()" value="¨¨???" /> </DIV> </ProgressTemplate> </asp:UpdateProgress>

</asp:Panel>


<asp:UpdatePanel ID="upAutoSave" runat="server">
<ContentTemplate>
<%if ((int)Session["Blogger_SavePostID"] != 0){ %>
<img src="/Blog/Blogger/Images/hasSaved.jpg" />
<span>日志已自动保存</span>
<%%>
<asp:Timer ID="tmr" runat="server" Interval="20000"></asp:Timer>
</ContentTemplate>
</asp:UpdatePanel>  

<br />            

<div style="width: 698px; height: 346px">
<FCKeditorV2:FCKeditor id="Content" runat="server" Width="100%" BasePath="~/FCKeditor/" Height="500px" ToolbarSet="Default"></FCKeditorV2:FCKeditor>              

    
</div>
    …
在AJAX.NET 调用Callback方法 的时候,用Content.Value是取不到值的,这是由于在 Callback 时没有调用 FCK.UpdateLinkedField() 方法。
在窗体的Load 事件注册一下该方法:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Page.ClientScript.RegisterOnSubmitStatement(
Content.GetType(),
"editor",

"FCKUpdateLinkedField('" + Content.ClientID + "');");
之后就可以使用Content.Value 获得FCKeditor 的值了。
可以参考:

ASP.NET下解决FCKEditor在AJAX中取值问题

FCK Wiki


posted @   Doho  阅读(1866)  评论(2编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示