HtmlEditorExtender 的回发问题
Postback issue with HtmlEditorExtender
我目前正在做一个需要 HtmlEditorExtender 的项目。最近我在使用 HtmlEditorExtender 时遇到了一个奇怪的问题。
当我键入文本并单击“保存”按钮时。一切正常。但是当我复制和粘贴文本(简短或段落)时。 HtmlEditorExtender 失去了它的价值,并且数据不会被保存。但是,我对常规文本框进行了同样的尝试。但我没有发现他们有任何问题。
我的代码看起来像这样:
Default.aspx:
<asp:UpdatePanel runat="server" ID="id123">
<Triggers>
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
<ContentTemplate>
<asp:TextBox ID="txtSlidePage" TextMode="MultiLine" Columns="50" Rows="10" Width="100%" Height="200" runat="server" />
<ajaxToolkit:HtmlEditorExtender ID="HtmlEditorExtender1" TargetControlID="txtSlidePage" runat="server" DisplaySourceTab="true">
<Toolbar>
<ajaxToolkit:Undo />
<ajaxToolkit:Redo />
</Toolbar>
</ajaxToolkit:HtmlEditorExtender>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click1" />
后面的代码:
protected void Button1_Click1(object sender, EventArgs e)
{
Response.Write("<script>alert('" + txtSlidePage.Text + "');</script>");
}
我保持代码简短。只是为了通过 Javascript Alert.
查看结果
有什么建议吗?
我强烈推荐你使用CKEditor。我一直在使用它,没有任何问题,它有一个易于使用的 asp.net 控件。 HTML 编码和解码的过程也很简单。
demo
请参考这个link
您还可以轻松自定义工具栏,如下所示:
<CKEditor:CKEditorControl ID="txtSlideTexts" BasePath="/ckeditor/" runat="server" Toolbar="Basic"
ToolbarBasic="|Bold|Italic|Underline|Strike|-|NumberedList|BulletedList|Outdent|Indent|-|JustifyLeft|JustifyCenter|JustifyRight|JustifyBlock|
|Link|Unlink|-|TextColor|-|Undo|Redo|Cut|Copy|Paste|PasteText|PasteFromWord|
|Find|Replace|SelectAll|-|Image|Table|HorizontalRule|SpecialChar|-|Format|" ></CKEditor:CKEditorControl>
最后在后面的代码中:
string str = CKEditor1.Text;
string str1 = Server.HtmlEncode(str);
string str2 = Server.HtmlDecode(str);
因为它是服务器端控件。 post 回刊期间您不会遇到困难。
我目前正在做一个需要 HtmlEditorExtender 的项目。最近我在使用 HtmlEditorExtender 时遇到了一个奇怪的问题。
当我键入文本并单击“保存”按钮时。一切正常。但是当我复制和粘贴文本(简短或段落)时。 HtmlEditorExtender 失去了它的价值,并且数据不会被保存。但是,我对常规文本框进行了同样的尝试。但我没有发现他们有任何问题。
我的代码看起来像这样:
Default.aspx:
<asp:UpdatePanel runat="server" ID="id123">
<Triggers>
<asp:PostBackTrigger ControlID="Button1" />
</Triggers>
<ContentTemplate>
<asp:TextBox ID="txtSlidePage" TextMode="MultiLine" Columns="50" Rows="10" Width="100%" Height="200" runat="server" />
<ajaxToolkit:HtmlEditorExtender ID="HtmlEditorExtender1" TargetControlID="txtSlidePage" runat="server" DisplaySourceTab="true">
<Toolbar>
<ajaxToolkit:Undo />
<ajaxToolkit:Redo />
</Toolbar>
</ajaxToolkit:HtmlEditorExtender>
</ContentTemplate>
</asp:UpdatePanel>
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click1" />
后面的代码:
protected void Button1_Click1(object sender, EventArgs e)
{
Response.Write("<script>alert('" + txtSlidePage.Text + "');</script>");
}
我保持代码简短。只是为了通过 Javascript Alert.
查看结果有什么建议吗?
我强烈推荐你使用CKEditor。我一直在使用它,没有任何问题,它有一个易于使用的 asp.net 控件。 HTML 编码和解码的过程也很简单。 demo
请参考这个link您还可以轻松自定义工具栏,如下所示:
<CKEditor:CKEditorControl ID="txtSlideTexts" BasePath="/ckeditor/" runat="server" Toolbar="Basic"
ToolbarBasic="|Bold|Italic|Underline|Strike|-|NumberedList|BulletedList|Outdent|Indent|-|JustifyLeft|JustifyCenter|JustifyRight|JustifyBlock|
|Link|Unlink|-|TextColor|-|Undo|Redo|Cut|Copy|Paste|PasteText|PasteFromWord|
|Find|Replace|SelectAll|-|Image|Table|HorizontalRule|SpecialChar|-|Format|" ></CKEditor:CKEditorControl>
最后在后面的代码中:
string str = CKEditor1.Text;
string str1 = Server.HtmlEncode(str);
string str2 = Server.HtmlDecode(str);
因为它是服务器端控件。 post 回刊期间您不会遇到困难。