【问题标题】:Details View and integration with TinyMCE <%@ Page validateRequest="false" %>详细信息查看和与 TinyMCE 的集成 <%@ Page validateRequest="false" %>
【发布时间】:2010-12-21 12:24:31
【问题描述】:

我在编辑模式中的DetailView中使用TinyMCE。

我想知道是否有可以防止请求验证触发错误的解决方案

不使用 &lt;%@ Page validateRequest="false" %&gt; 我的页面。

目前我发现的唯一方法是使用选项对 TinyMCE 使用的 TextBox 进行编码:“xml”

tinyMCE.init({
        encoding: "xml",

这样,Request Validation 不会触发错误,而是在读取 TextBox 中的数据时将其结果编码。 我还尝试使用此代码在 PageLoad 上解码 TextBox 的内容

myTextBox.Text = HttpUtility.HtmlDecode(myTextBox.Text)

但结果并不如预期,所以我可以将其可视化为编码文本。

有什么想法吗?谢谢

更新


我找到了解决问题的方法。 我在 _DataBound 事件中为 DetailsView 添加了这段代码

       TextBox myContentAuthor = (TextBox)uxAuthorListDetailsView.FindControl("uxContentAuthorInput");
        myContentAuthor.Text = HttpUtility.HtmlDecode(myContentAuthor.Text);

因此,在 DataBound 事件上,(即使在回发时也应该工作)内容将为 textbox tinymce 进行解码。

这里应该如何工作:

01 - 使用函数编码将 TinyMCE ESCAPE 数据插入文本框中:“xml”,

02 - 数据已被存储为 ESCAPED

03 - 读取数据并将其内容添加到 TextBox,其中应用 TinyMCE 在 DATABOUND EVENT 中用于 DetailView 和 HttpUtility.HtmlDecode(因此看起来已解码)

04 - 您可以在编辑模式下修改文本框中的内容。在回发时,TinyMCE 将使用 encoding: "xml" an so on 再次编码

希望大家可以帮助别人。

但是请给我您对此解决方案的评论,谢谢! Mybe 你想出了更优雅的解决方案! :-)

【问题讨论】:

标签: c# asp.net tinymce


【解决方案1】:

我个人会简单地关闭此页面的请求验证。

除非您预见到跨站点请求等问题,否则没有必要躲避其假定的“保护”

【讨论】:

  • 您好,感谢您的评论。但是我需要在写入数据库时​​对所有数据进行编码,并根据要求对其进行解码。所以在我的情况下,我必须在 TextBox 中解码。此页面上的请求验证关闭意味着更改我们的应用程序和应用程序的 Web.Config 中的设置,这可能会产生一些安全风险。谢谢
【解决方案2】:

这也可以通过在页面回发之前从数据中删除 html 标记来完成。

【讨论】:

    【解决方案3】:

    问题是:
    当 PostBack 到达时,TinyMCE 重新编码 textarea 的内容。 要解决这个问题,解决办法比解释容易...

    Page_Load 中,您必须测试它是否为 PostBack -> 将 myTextBox.Text 替换为 HttpUtility.HtmlDecode(myTextBox.Text)

    我试试,它的工作......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      相关资源
      最近更新 更多