如何在ContentPlaceHolder中运行JavaScript?

时间:2010-05-19 19:59:16

标签: javascript master-pages

当一切都在一个页面中时,我有一大堆javascript运行良好。现在我把它分开了,我不知道如何包含javascript,在主服务器中输入HEAD标签,而且,我还有在加载主体时运行的函数,但它们也在主服务器中。< / p>

顺便说一句,这是一个.NET 2.0应用程序。

3 个答案:

答案 0 :(得分:2)

如果您有特定于某些网页的脚本,而您使用一个主MasterPage,只需在母版页的头部添加ContentPlaceHolder即可。

主页:

<head runat="server">

    <script type="text/javascript" src="my-site-wide-script.js"></script>
    <asp:ContentPlaceHolder ID="cphHead" runat="server" />
</head>

内容页面:

<asp:content ID="cHead" runat="server" ContentPlaceHolderID="cphHead">
    <script type="text/javascript" src="some-page-specific-script.js"></script>
</asp:content>

最终结果提供给浏览器(一般情况下):

<head>    
    <script type="text/javascript" src="my-site-wide-script.js"></script>
    <script type="text/javascript" src="some-page-specific-script.js"></script>
</head>

现在,您添加到内容页面的任何脚本都将位于基本脚本之后。使您可以灵活地使用特定于页面的脚本。

请注意:VS2005会抛出警告/错误,在头标记中不允许ContentPlaceHolder。忽略它,这是VS中的一个错误。 VS2008 +不会打扰你。

答案 1 :(得分:0)

母版页的概念适用于服务器端,您的浏览器只会将结果视为一个页面,因此您可以将javascript函数放在母版的head部分,如果需要或在其余部分中将其调用到内容页面中主页面。

修改

您可以在主页的头部放置内容占位符,如果您愿意,子页面可以在头部包含其特定脚本...

实施例

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript" src="yourglobaljsfile.js"></script>

    <asp:ContentPlaceHolder ID="ScriptContent" runat="server" />
</head>
<body>
    <div style="position: absolute; width: 100%; top: 0px;">
     <asp:ContentPlaceHolder ID="OtherPlaceholer" runat="server" />
    </div>
    <script type="text/javascript">yourGlobalfunction();</script>
</body>

儿童示例

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<CatalogViewModel>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">

    //blabla
     <script type="text/javascript">yourSpecificfunction();</script>
</asp:Content>

<asp:Content ID="Content2" ContentPlaceHolderID="ScriptContent" runat="server">
    <script type="text/javascript" src="yourspecificjsfile.js"></script>
</asp:Content>

答案 2 :(得分:0)

通常,您可以将多个页面使用的常用javascripts放入单独的文件中,并从母版页链接到该页面,并且可以使用

将任何一个off函数包含在其他任何位置。
<script type="text/javascript"></script>