创建服务器控件.创建问题

Create server control.Creation issue

本文关键字:创建 问题 服务器控件      更新时间:2023-09-26

我创建了一个新的服务器控件。请参阅下面的代码:

 public class Tree : Control
    {
        #region Rendering
        protected override void Render(HtmlTextWriter output)
        {
            RenderInputTag(output);
        }
        private void RenderInputTag(HtmlTextWriter htw)
        {
            //Javascript
            htw.AddAttribute(HtmlTextWriterAttribute.Type, "text/javascript");
            htw.RenderBeginTag(HtmlTextWriterTag.Script);
            htw.Write("<%@ Register Src='"~/Controls/TreeJavascript.ascx'" TagName='"Tree'" TagPrefix='"flt'"%>");
            htw.RenderEndTag();
        }
        #endregion
    }

但是当我想使用控制器时,我收到以下错误:

Uncaught SyntaxError: Unexpected token <

如何解决?

这是呈现的 HTML:

<script type=text/javascript>
    <%@ Register Src='"~/Controls/TreeJavascript.ascx'" TagName='"Tree'" TagPrefix='"flt'"%>
</script>

既然你说输出是这样的:

<script type=text/javascript>
    <%@ Register Src='"~/Controls/TreeJavascript.ascx'" TagName='"Tree'" TagPrefix='"flt'"%>
</script>
很明显

,问题的原因是服务器端标记未呈现为 HTML 中的代码。由于<%在javascript中无效,因此它会中断。

我认为您应该在代码中初始化控件,并对其调用RenderControl

TreeJavascript t = new TreeJavascript();
t.RenderControl(htw);

否则,如果内容只是静态的,请将 javascript 保存在变量中并将其放在此处。