Как добавить 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>
Ответы
Ответ 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>