【问题标题】:Create server control.Creation issue创建服务器控件。创建问题
【发布时间】:2015-03-31 07:39:28
【问题描述】:

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

 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>

【问题讨论】:

  • 您正在尝试在 HTML 中呈现服务器端标签,这肯定行不通。
  • 你在哪一行得到错误?生成的 HTML 是什么?
  • 这一行出现错误。我没有生成的标记
  • 什么'这条线'?有20行代码...
  • 这个错误出现在浏览器控制台,当我想使用服务器控制时(htw.Write())

标签: javascript c# html asp.net webforms


【解决方案1】:

既然你说输出是这样的:

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

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

我认为你应该在代码中初始化控件,并在上面调用RenderControl

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

否则,如果内容只是静态的,请将 javascript 保存在一个变量中并放在这里。

【讨论】:

  • 您应该能够在TreeJavascript.ascxTreeJavascript.ascx.cs 文件中看到命名空间。如果没有,您可以添加它。
  • @Denis1:你修好了吗?如果是这样,如果它对你有用,请接受我的回答。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
相关资源
最近更新 更多