2015-03-31 50 views
0

我创建了一个新的服务器control.See下面的代码:创建服务器control.Сreation问题

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> 
+0

您正在尝试在HTML内呈现服务器端标记,这是不会工作的。 – 2015-03-31 07:45:35

+0

你在哪一行得到错误?什么是最终的HTML? – 2015-03-31 07:45:58

+0

我在这条线上发生了错误。我没有产生标记 – Denis1 2015-03-31 07:57:48

回答

0

既然你说的输出是这样的:

<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中的变量,并把它放在这里。

+0

您应该可以查看'TreeJavascript.ascx'或'TreeJavascript.ascx.cs'文件中的命名空间。如果它没有,你可以添加它。 – 2015-03-31 09:17:32

+0

@ Denis1:你修好了吗?如果是这样,请接受我的答案,如果它对你有用。 – 2015-03-31 09:35:48

+0

由于某种原因它不起作用 – Denis1 2015-04-01 10:46:19