Как запустить JavaScript в моем ContentPlaceHolder? - PullRequest
1 голос
/ 19 мая 2010

У меня был груз JavaScript, который работал хорошо, когда все было на одной странице. Теперь, когда я выделил это, я не уверен, как включить javascript, добавить тег HEAD в мастер, а также у меня были функции, которые запускались при загрузке тела, но они тоже в мастере.

Кстати, это приложение .NET 2.0.

Ответы [ 3 ]

2 голосов
/ 20 мая 2010

Если у вас есть сценарии, характерные для определенных страниц, и вы используете одну главную MasterPage, просто добавьте ContentPlaceHolder в начало главной страницы.

Masterpage:

<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 не разрешен в теге head.Проигнорируйте это, это ошибка в VS.VS2008 + не побеспокоит вас об этом.

0 голосов
/ 20 мая 2010

Как правило, вы бы помещали обычные javascript-коды, которые используют более одной страницы, в отдельный файл и ссылались на него с главной страницы, а любые другие функции можно включить где-либо еще, используя

<script type="text/javascript"></script>
0 голосов
/ 20 мая 2010

Концепция главной страницы предназначена для серверной части, ваш браузер будет видеть результат только как одну страницу, чтобы вы могли поместить свои функции javascript в раздел заголовка вашего мастера и вызывать их на своих страницах контента, если хотите, или на остальных главной страницы.

EDIT

Вы можете поместить заполнитель содержимого в раздел заголовка вашей главной страницы, чтобы дочерняя страница могла включать свой специальный сценарий в заголовок, если хотите ...

Пример

<%@ 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>
...