如何在回发后保持 HTML div 的状态
How to keep the state of HTML div after postback
我在我的网络表单应用程序中使用 CKEditor 是这样的:
<div class="editor" runat="server" EnableViewState="true">
<div cols="10" id="editor1" name="editor1" data-sample-short contenteditable="true" runat="server" EnableViewState="true">
TEST
</div>
</div>
我想在回发后得到 editor1.InnerText
,但我不能,因为它是无状态的 HTML div,同时我不能使用等效的服务器控件,因为我已经在此控件上处理了所需的事件。
postback后如何保留数据?
按如下方式使用隐藏文本字段:
<asp:TextBox ID="tbTransfer" runat="server" TextMode="Multiline"></asp:TextBox>
在Javascript中:
//Set Transfer Textbox display to none
document.getElementById('MainContent_tbTransfer').style.display = "none";
//Set Initial Source Code of CKEditor to Transfer TextBox's value
CKEDITOR.instances.editor1.setData(document.getElementById('MainContent_tbTransfer').value);
//Use this function for when you want to do the PostBack
function PostBack() {
var temp = CKEDITOR.instances.editor1.getData();
document.getElementById('MainContent_tbTransfer').value = temp.replace(/</g, "d123").replace(/>/g, "d321").replace(/&/g,"d111");
}
在代码隐藏中:
//Getting the HTML source code of CKEditor from the Transfer Textbox and Decrypting it
string htmlToSave = tbTransfer.Text.Replace("d123", "<").Replace("d321", ">").Replace("d111", "&");
//Setting back the Transfer Textbox's text to the decrypted HTML source code
//for when the page reloads at the end of the function,
//CKEditor sets its data = Transfer Textbox's Text
tbTransfer.Text = htmlToSave;
HTML 代码的加密和解密是必要的,因为 Web 浏览器会将字符“<”、“>”、“&”识别为 HTML 标记,并且不会让您 post 返回文本框内的普通 HTML 文本。
如果您的文本框在浏览器中有不同的 ID,请不要忘记更改 'MainContent_tbTransfer'
我在我的网络表单应用程序中使用 CKEditor 是这样的:
<div class="editor" runat="server" EnableViewState="true">
<div cols="10" id="editor1" name="editor1" data-sample-short contenteditable="true" runat="server" EnableViewState="true">
TEST
</div>
</div>
我想在回发后得到 editor1.InnerText
,但我不能,因为它是无状态的 HTML div,同时我不能使用等效的服务器控件,因为我已经在此控件上处理了所需的事件。
postback后如何保留数据?
按如下方式使用隐藏文本字段:
<asp:TextBox ID="tbTransfer" runat="server" TextMode="Multiline"></asp:TextBox>
在Javascript中:
//Set Transfer Textbox display to none
document.getElementById('MainContent_tbTransfer').style.display = "none";
//Set Initial Source Code of CKEditor to Transfer TextBox's value
CKEDITOR.instances.editor1.setData(document.getElementById('MainContent_tbTransfer').value);
//Use this function for when you want to do the PostBack
function PostBack() {
var temp = CKEDITOR.instances.editor1.getData();
document.getElementById('MainContent_tbTransfer').value = temp.replace(/</g, "d123").replace(/>/g, "d321").replace(/&/g,"d111");
}
在代码隐藏中:
//Getting the HTML source code of CKEditor from the Transfer Textbox and Decrypting it
string htmlToSave = tbTransfer.Text.Replace("d123", "<").Replace("d321", ">").Replace("d111", "&");
//Setting back the Transfer Textbox's text to the decrypted HTML source code
//for when the page reloads at the end of the function,
//CKEditor sets its data = Transfer Textbox's Text
tbTransfer.Text = htmlToSave;
HTML 代码的加密和解密是必要的,因为 Web 浏览器会将字符“<”、“>”、“&”识别为 HTML 标记,并且不会让您 post 返回文本框内的普通 HTML 文本。
如果您的文本框在浏览器中有不同的 ID,请不要忘记更改 'MainContent_tbTransfer'