繁体   English   中英

如何使用asp.net中指定的runat =“ server”删除控件

[英]How to remove controls with runat=“server” specified in asp.net

我有一个带有服务器可访问控件的网页,请参见下面的“ FileIconLink”:

<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'都是Web控件的模板,这些模板由我的代码复制-例如<% WriteFileLinks(); %> <% WriteFileLinks(); %>以上。 如何在服务器上运行时将这些模板从网页上永久删除而不会导致错误:

无法删除控件集合,因为控件包含代码块(即<%...%>)。

提前致谢!

这是因为您要更改的控件中有<%%>。 而不是在aspx页面中使用<%%>,我将修改后面的代码以向div中添加文字控件或其他内容,例如:

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

然后,您应该能够在后面的代码中修改控件。

您的内联代码在渲染期间执行。

但是您可能希望在Load期间摆脱模板。

这意味着这两种技术存在冲突。

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

我的解决方案如下:

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

除了Page_Load函数称为Page_PreRender,Page对象还有另一个函数,该函数在Page_Load之前执行。 因此,请尝试删除此Page_PreRender函数中的逻辑。 请参考此链接http://msdn.microsoft.com/en-us/library/system.web.ui.control.prerender.aspx

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM