2009-03-29 2 views
32

У меня есть простой вид, и я хочу добавить JQuery DatePicker JavaScript к этому виду (а не каждый вид, через главную страницу).Как добавить JavaScript в представление ASP.NET MVC?

Я не уверен, что это лучший способ сделать это.

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

Итак, как я мог сделать оба?

Вот вид:

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

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

    <h2>Index</h2> 

    <% using (Html.BeginForm()) {%> 

    <p> 
     <label for="StartDate">Start Date:</label> 
     <!-- JQuery DatePicker to be added, here. --> 
    </p> 
    <% } %> 
</asp:Content> 

ответ

12

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

+0

Приветствия :) Для записи, я добавил новый ContentPlaceHolder в нижней части страницы, прямо над тегом. Обсуждение об этом, здесь: http://developer.yahoo.net/blog/archives/2007/07/high_performanc_5.html –

+0

Согласовано, как правило, есть один в голове. Проект, над которым я работаю, очень JS тяжелый, поэтому jquery & jquery ui загружаются через master ... Клиентский браузер получает это при входе в систему и может кэшировать его ... – Tracker1

15

Ваша MasterPage должна иметь ContentPlaceHolder для головы.

<head runat="server"> 
    <title></title> 
    <asp:ContentPlaceHolder ID="head" runat="server" /> 
</head> 

Тогда вы сможете включать элементы головы (JavaScripts, таблицы стилей и т.д. ...) в ваших просмотров:

<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> 
    <script src="/Scripts/jquery/ui/ui.datepicker.js" type="text/javascript"> 
    </script> 
    <link href="/Styles/myStyle.css" rel="stylesheet" type="text/css" /> 
</asp:Content> 
+1

этот ответ был лучше, за исключением того, что он помещал его в голову .. когда i сказал, что он должен быть добавлен в нижней части страницы. Так что winob0t получает галочку. –

22

В ASP.NET MVC3, теперь вы можете использовать RenderSection для достичь этого, по крайней мере, для более простых сценариев. Просто добавьте RenderSection в нижней части страницы макета, и с вашей точки зрения заполнения кода appliation

RenderSections: http://www.dotnetcurry.com/ShowArticle.aspx?ID=636

+1

+1 для ссылки RenderSections. Это то, что я искал. – rein