首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ResolveClientUrl在runat服务器头内

ResolveClientUrl在runat服务器头内
EN

Stack Overflow用户
提问于 2012-05-01 17:52:47
回答 2查看 6.4K关注 0票数 1

我在做一个网站。head标记具有runat服务器攻击。在母版页上。

我试图将ResolveClientUrl用于像这样的.js文件:

代码语言:javascript
复制
 <head runat="server">
   .. 
  <script src='<%= ResolveClientUrl("~/myscript.js") %>' type="text/javascript" >    </script>
 </head>

但后来我发现了一个错误:

代码语言:javascript
复制
The Controls collection cannot be modified because the control contains code blocks (i.e. <% ... %>). 

我发现问题出在运行服务器上,所以我把它从头标签上删除了.现在我得到了以下错误:

代码语言:javascript
复制
Using themed css files requires a header control on the page. (e.g. <head runat="server" />). 

那么,如何在runat服务器头中使用ResolveClientUrl呢?

更新:

我使用母版页顶部的包含添加了脚本(似乎很好)。但也许会有更好的解决方案。

代码语言:javascript
复制
<!-- #include file="myscript.js" -->
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-02 18:32:54

您可以使用数据库:

代码语言:javascript
复制
<head ID="head" runat="server">
    ..
    <script src='<%# ResolveClientUrl("~/myscript.js") %>' type="text/javascript" >    </script>
</head>

然后在代码隐藏中(最好是在Page事件处理程序中):

代码语言:javascript
复制
head.DataBind()
票数 3
EN

Stack Overflow用户

发布于 2013-10-31 15:42:15

获得该消息的原因是,当引入代码块时,必须锁定包含runat="server“控件的runat=,以防止出现核心框架在呈现时无法恢复的意外情况(因此执行呈现代码块)。

当使用任何想要将自己“添加”到服务器控件集合中的代码时,事情就变得更复杂了。

要防止这种情况,最好的方法是将所有代码块封装在标题中的文字控件中:

代码语言:javascript
复制
<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>

因此,现在我们已经将框架推入锁定文字的控件集合,而不是控件集合。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10401932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档