我有这样的场景(针对这个问题进行了简化):
我有一个母版页:
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Ads.master.cs" Inherits="ActiveDigitalSignage.Ads" %>
<!DOCTYPE html>
<html>
<head>
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<div class="wrapper">
<form id="form1" runat="server">
<header>
</header>
<section>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</section>
</form>
</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<asp:ContentPlaceHolder ID="script" runat="server">
</asp:ContentPlaceHolder>
</body>
</html>
我有一个default.aspx页面:
<%@ Page Title="" Language="C#" MasterPageFile="~/Ads.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Default" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<div><p>Test</p></div>
</asp:Content>
<asp:Content ID="Content3" ContentPlaceHolderID="script" runat="server">
</asp:Content>
它的设置方式是,任何标题内容都可以放在“head”部分。主要内容在“ContentPlaceHolder”中,任何javascript都会进入“脚本”占位符。现在一切都很好。
我遇到的问题是我想在Default.aspx页面中使用用户控件(.ascx)。但是在用户控件中有javascript。因为jQuery位于页面的底部(在“脚本”部分中),所以用户用户控件中的javascript正在破坏。有没有办法在“脚本”占位符内的用户控件渲染中生成javascript?
我知道我可以将代码复制并粘贴到.js文件中并在我的母版页中加载javascript。这样做的问题是在javascript中有一堆ASP.NET标记(例如&lt;%=%&gt;)引用用户控件中的控件,因此将其复制并粘贴到.js文件中会破坏这一点。
我想,在我的脑海中,在预呈现期间,global.asax页面中可能有一种方法可以检测用户控件中的javascript并将其动态移动到正确的部分?