在服务器端控件中使用 <%= %> 会导致无法修改 Controls 集合,因为控件包含代码块(即 <% ... %>)

Posted

技术标签:

【中文标题】在服务器端控件中使用 <%= %> 会导致无法修改 Controls 集合,因为控件包含代码块(即 <% ... %>)【英文标题】:Using <%= %> inside server side controls gives The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>) 【发布时间】:2013-01-13 11:36:30 【问题描述】:

我在服务器控件中使用&lt;%= %&gt; 并给我错误:

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

这是我的代码:

 <asp:Menu runat="server" >
        <Items>
            <asp:MenuItem Text="Candidates" NavigateUrl="<%=Constants.AccountPageUrl %>" />
        </Items>
 </asp:Menu>

【问题讨论】:

控件是否加载到母版页中? 或者试试不加双引号! NavigateUrl=&lt;%= varName %&gt; 【参考方案1】:

试试下面的..它可能对你有帮助

NavigateUrl="<%#Constants.AccountPageUrl %>"

【讨论】:

那永远行不通。因为 # 仅在我们数据绑定时使用。在这种情况下,我放置了静态菜单项。 通过这个链接...它可以帮助你aspdotnet-suresh.com/2011/12/… @Jack - 英镑符号破解是一种解决方法 - 但只有图片的 1/2。 Page.DataBind() 也需要添加到母版页。

以上是关于在服务器端控件中使用 <%= %> 会导致无法修改 Controls 集合,因为控件包含代码块(即 <% ... %>)的主要内容,如果未能解决你的问题,请参考以下文章

javascript获取asp.net服务器端控件的值

JS触发ASP.NET服务器端控件的方法

05-19Web端控件,页面传值

服务器端控件ajax请求

ASP.NET 自定义控件 - 未知的服务器标记

为啥将 <%= %> 表达式作为服务器控件上的属性值会导致编译错误?