【问题标题】:How to remove controls with runat="server" specified in asp.net如何使用在 asp.net 中指定的 runat="server" 删除控件
【发布时间】:2011-11-25 01:48:17
【问题描述】:

我有一个带有服务器可访问控件的网页,请参阅下面的“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 控件模板 - 例如上面的 &lt;% WriteFileLinks(); %&gt;。如何在服务器运行时从网页中永久删除这些模板而不会导致错误:

无法修改 Controls 集合,因为该控件包含代码块(即 )。

提前致谢!

【问题讨论】:

  • 你到底想做什么?我无法弄清楚你在做什么。 WriteFileLinksRemoveHTMLTemplates 里面是什么?提供该代码,它可能会更有意义。

标签: c# asp.net web-controls


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    但您可能希望在加载期间摆脱模板。

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

    【讨论】:

    • @James 我不能 100% 确定您要达到的目标。大概是因为他们有 runat=server 你可以在加载后的页面生命周期中看到它们并克隆它们或其他什么?我想看看 WriteFileLinks();如果只是设置控件的 visible=false,则控件根本不会呈现给客户端,但是有一些功能,例如中继器控件,它们具有内置的模板功能。
    【解决方案3】:

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

    我的解决方法如下:

    • 制作控件以包含我(以前的内联)代码的结果。
    • 使用 Page_Load 中的模板来填充上述控件。
    • 删除 Page_Load 中的模板。
    • 内联什么都不做。

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-16
        • 1970-01-01
        相关资源
        最近更新 更多