我正在寻找一种将编辑器控件(来自 ASP.NET AJAX 控件工具包)添加到转发器的每个元素的方法。如果我只是将它包含在转发器的 ItemTemplate 中,它工作正常,但我的问题是它产生的标记很大,这会大大减慢页面速度(即使打开压缩)。
我没有任何运气使用更新面板在中继器项内添加控件 - 我认为这可能是首选方法,但在中继器项内的更新面板内动态添加控件并不是我所拥有的任何成功,我似乎找不到任何好的例子。
我考虑的另一种选择是使用 PageMethods 呈现控件并将 HTML 发送回页面以让 javascript 将其放在适当的位置,然后处理它,但它不会让我呈现控件 - 我得到一个“页面不能为空。请确保在 ASP.NET 请求的上下文中执行此操作。”的 InvalidOperationException。我的猜测是,生成的所有 javascript 都使得我不能只即时渲染编辑器控件。
你能指出我实现这一目标的正确方向吗?
谢谢
编辑:如果可能的话,另一种选择是在页面的标记中放置一个普通的编辑器控件,然后根据需要使用 javascript 在转发器内部移动它。我可以使用普通控件执行此操作,但是当我使用编辑器执行此操作时,它的行为并不好 - 出现文本框,但不允许我在其中单击。如果您对此有任何想法,我也将不胜感激。这是此的代码:
<span id="spanHiddenEditor" style="display: block;">
<cc1:Editor ID="ed1" runat="server" Height="200" Width="400" />
</span>
<script type="text/javascript">
function createTextBox(idx) {
var span = $get("span1_" + idx); // this gets me the target location
var hiddenEditorSpan = $get("spanHiddenEditor")
var editorHtml = hiddenEditorSpan.innerHTML;
hiddenEditorSpan.innerHTML = "";
span.innerHTML = editorHtml;
}
</script>