2015-03-31 64 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