Подтвердить что ты не робот

Как добавить JavaScript в ASP.NET MVC View?

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

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

Во-вторых, я понимаю, где/когда мой 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>
4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

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

Затем вы можете включить элементы заголовка (JavaScripts, StyleSheets и т.д.) в свои представления:

<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>