我在ASP.Net母版页中有这个:
<script language="javascript" type="text/javascript">
<asp:ContentPlaceHolder ID="scriptContentHolder" runat="server"></asp:ContentPlaceHolder>
</script>
但是当我尝试在设计模式下查看内容页面时,它告诉我相关母版页面中存在错误,因为“scriptContentHolder”不存在。
<asp:Content ID="scriptContent" ContentPlaceHolderID="scriptContentHolder" runat="server">
g_page = "mnuSurveys";
</asp:Content>
如果我将主页面更改为:
<asp:ContentPlaceHolder ID="scriptContentHolder" runat="server"></asp:ContentPlaceHolder>
和内容页面:
<asp:Content ID="scriptContent" ContentPlaceHolderID="scriptContentHolder" runat="server">
<script language="javascript" type="text/javascript">
g_page = "mnuSurveys";
</script>
</asp:Content>
然后一切都很酷。为什么是这样?该页面编译并执行得很好......但是如上所述,设计师在标签内放置ContentPlaceHolder控件时会发出嘎嘎声。
答案 0 :(得分:9)
我遇到了同样的问题并且解决了这个问题:
<%= "<script type=\"text/javascript\">" %>
jQuery(document).ready(function() {
// On document ready, execute this methods...
<asp:ContentPlaceHolder ID="jQueryOnDocReady" runat="server" />
});
<%= "</script>"%>
答案 1 :(得分:1)
根据截至2009年5月的this MS Connect帖子,
VS设计师不支持控件 在脚本块中。或者,你 能打电话 Page.ClientScriptManager.RegistgerClientScriptBlock 来自内容页面
[原文如此]
所以你必须使用你发布的第二种/解决方法。
答案 2 :(得分:0)
这可能有点偏离轨道。但是我遇到了同样的问题,因为我在母版页中有一些我想要的通用代码,而其他更具体的代码只在某些页面上,这是我的解决方案:
- 在我的.Master中:
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXX-X']);
_gaq.push(['_trackPageview']);
</script>
<asp:ContentPlaceHolder ID="PerPageScript" runat="server">
</asp:ContentPlaceHolder>
- 在我的.aspx:
<asp:Content ID="Content1" ContentPlaceHolderID="PerPageScript" runat="server">
<script type="text/javascript">
...
</script>
</asp:Content>