【发布时间】:2011-05-14 14:02:54
【问题描述】:
我在一个页面上有几个<asp:TextBox TextMode="MultiLine"> 元素。在加载时,我填充它们(通过后面的 VB 代码),然后将它们变成 TinyMCE 编辑器(通过 jQuery TinyMCE 插件)。每个文本框还有一个与之关联的按钮,目的是将文本提交回后面的代码以插入数据库。
我之前发现,当点击提交按钮时,我必须将编辑器的内容“保存”到文本框中,但这不是我的问题。即使我这样做了,编辑也没有显示在后面的代码中。
正如我所提到的,我正在使用 jQuery。这是我的点击处理程序。请记住,所有按钮都是 ASP.NET 中的提交按钮,因此 submit 类:
$('input.submit').live('click', function() {
tinyMCE.EditorManager.triggerSave();
});
因此,当点击任何提交按钮时,所有 tinyMCE 编辑器都会触发其保存事件。执行此操作后,我检查了我正在寻找的 textarea 的值(再次通过 JavaScript),它似乎进行了编辑(我正在使用 Chrome 的开发人员工具和 console.log):
console.log($(this).parent().find('textarea').val());
不过,在服务器端,我在提交按钮的单击处理程序中看不到任何编辑:
Dim paragraph As String = Me.myTextArea.Text
' Results in the original text, not the edited text
其他说明:
- 每个编辑器都在自己的更新面板中
- 由于所提交内容 (HTML) 的性质,我不得不设置
EnableEventValidation="false"和ValidateRequest="false"(这是一个内部应用程序,此建议来自更有经验的开发人员) - 我对 .NET 还很陌生,但这种行为对我来说似乎很荒谬。我一定遗漏了一些重要的东西。
【问题讨论】:
-
如何将数据传输到服务器?
-
按钮使用
OnCommand,带有适当的CommandName和CommandArgument,然后在代码隐藏中,我通过Me.myTextArea.Text访问数据。 -
我想我实际上已经弄清楚了这个问题,但我还没有测试我的理论。我认为
OnCommand回发首先被执行(异步发送旧数据),然后我在JS中的断点被命中(所以我在调试器中看到编辑过的文本),然后我在VB中的断点被命中(所以我在 VB 调试器中看到了旧文本)。似乎是一个可靠的理论,但就像我说的,未经检验。
标签: javascript asp.net vb.net textbox tinymce