2011-09-27 38 views
0

规定我有服务器访问控件的网页RUNAT =“服务器”删除控件,请参见“FileIconLink”下面:如何在asp.net

<body> 
    <p class="FirstTitle style5">Downloads:</p> 
    <div id="BreadcrumbDiv"> 
     <p style="padding-left:5px; ">Page Loading...</p> 
    </div><!--/BreadcrumbDiv--> 
    <div id="DirLinksDiv"> 
     <p><span class="SecondTitle">Files:</span></p> 
      <a runat="server" href="#" id="FileIconLink">File</a> 
      <% WriteFileLinks(); %> 
     <p><span class="SecondTitle">Folders:</span></p> 
      <a runat="server" href="#" id="FolderIconLink">Folder</a> 
    </div><!--/DirLinksDiv--> 
</body> 
<%RemoveHTMLTemplates(); %> 

两个“FileIconLink”和“FolderIconLink”是模板我的代码复制的网页控件 - 例如上面的<% WriteFileLinks(); %>。怎么能这些模板被永久地从在运行时服务器上的网页移除,而不会导致错误:

Controls集合不能修改,因为该控件包含代码块(即<%...%>) 。

在此先感谢!

+0

你想要做什么在世界上?我无法弄清楚你在做什么。 “WriteFileLinks”和“RemoveHTMLTemplates”内部是什么?提供这些代码,它可能会更有意义。 –

回答

1

最终,我意识到我的方法是错误的,正如Cade Roux所暗指的,我需要下定决心要使用模板。

我的解决办法如下:

  • 使控件包含我的(以前在线)代码的结果。
  • 使用Page_Load中的模板填充上述控件。
  • 删除Page_Load中的模板。
  • 不做任何内联。
2

您的内联代码在渲染过程中执行。

但是,您可能想要在加载过程中摆脱模板。

这意味着这两种技术相冲突。

+0

@詹姆斯我不是100%确定你想达到的目标。大概是因为他们有runat = server,你可以在加载后在页面生命周期中看到它们并克隆它们或者什么?我希望看到WriteFileLinks();如果您只是将控件的visible = false设置为可见,则控件将不会呈现给客户端,但具有内置模板功能的中继控件等功能。 –

3

这是因为您在要更改的控件内部有<%%>。相反,在aspx页面使用<%%>的,我会修改代码后面文字控制或添加一些东西到div,如:

DirLinks.Controls.Add(new LiteralControl(WriteFile())); 

然后,您应该能够修改窗体控件的代码背后。