我在做一个网站。head标记具有runat服务器攻击。在母版页上。
我试图将ResolveClientUrl用于像这样的.js文件:
<head runat="server">
..
<script src='<%= ResolveClientUrl("~/myscript.js") %>' type="text/javascript" > </script>
</head>但后来我发现了一个错误:
The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>). 我发现问题出在运行服务器上,所以我把它从头标签上删除了.现在我得到了以下错误:
Using themed css files requires a header control on the page. (e.g. <head runat="server" />). 那么,如何在runat服务器头中使用ResolveClientUrl呢?
更新:
我使用母版页顶部的包含添加了脚本(似乎很好)。但也许会有更好的解决方案。
<!-- #include file="myscript.js" -->发布于 2012-05-02 18:32:54
您可以使用数据库:
<head ID="head" runat="server">
..
<script src='<%# ResolveClientUrl("~/myscript.js") %>' type="text/javascript" > </script>
</head>然后在代码隐藏中(最好是在Page事件处理程序中):
head.DataBind()发布于 2013-10-31 15:42:15
获得该消息的原因是,当引入代码块时,必须锁定包含runat="server“控件的runat=,以防止出现核心框架在呈现时无法恢复的意外情况(因此执行呈现代码块)。
当使用任何想要将自己“添加”到服务器控件集合中的代码时,事情就变得更复杂了。
要防止这种情况,最好的方法是将所有代码块封装在标题中的文字控件中:
<head runat="server">
<title></title>
<asp:Literal runat="server" id="SCRIPTLIT1">
<script src='<%# ResolveClientUrl("~/myscript.js") %>' type="text/javascript"></script>
</asp:Literal>
<!-- ...other stuff -->
<asp:ContentPlaceholder runat="server" id="head"></asp:ContentPlaceholder>
</head>因此,现在我们已经将框架推入锁定文字的控件集合,而不是控件集合。
https://stackoverflow.com/questions/10401932
复制相似问题