Я бы определенно посоветовал не вводить их в частичные части по той причине, о которой вы говорите. Существует высокая вероятность того, что один вид может вывести две частичные части, которые имеют ссылки на один и тот же файл js. Вы также получили удар по загрузке js перед загрузкой остальной части html.
Я не знаю о передовой практике, но я хочу включить любые общие файлы js внутри главной страницы, а затем определить отдельный ContentPlaceHolder для некоторых дополнительных файлов js, которые относятся к определенному или небольшому числу просмотров.
Вот пример главной страницы - это очень понятно.
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>
<head runat="server">
... BLAH ...
<asp:ContentPlaceHolder ID="AdditionalHead" runat="server" />
... BLAH ...
<%= Html.CSSBlock("/styles/site.css") %>
<%= Html.CSSBlock("/styles/ie6.css", 6) %>
<%= Html.CSSBlock("/styles/ie7.css", 7) %>
<asp:ContentPlaceHolder ID="AdditionalCSS" runat="server" />
</head>
<body>
... BLAH ...
<%= Html.JSBlock("/scripts/jquery-1.3.2.js", "/scripts/jquery-1.3.2.min.js") %>
<%= Html.JSBlock("/scripts/global.js", "/scripts/global.min.js") %>
<asp:ContentPlaceHolder ID="AdditionalJS" runat="server" />
</body>
Html.CSSBlock
& Html.JSBlock
, очевидно, мои собственные расширения, но опять же, они сами за себя в том, что они делают.
Тогда в сказать SignUp.aspx
вид я бы
<asp:Content ID="signUpContent" ContentPlaceHolderID="AdditionalJS" runat="server">
<%= Html.JSBlock("/scripts/pages/account.signup.js", "/scripts/pages/account.signup.min.js") %>
</asp:Content>
HTHS, Чарльз
Ps. Вот следить за вопрос, я спросил о Минимизация и конкатенации JS файлы: Объединить & Минимизировать JS на лету или во время сборки - ASP.NET MVC
EDIT: В соответствии с просьбой на мой другой ответ, моя реализация .JSBlock(a, b)
в соответствии с просьбой
public static MvcHtmlString JSBlock(this HtmlHelper html, string fileName)
{
return html.JSBlock(fileName, string.Empty);
}
public static MvcHtmlString JSBlock(this HtmlHelper html, string fileName, string releaseFileName)
{
if (string.IsNullOrEmpty(fileName))
throw new ArgumentNullException("fileName");
string jsTag = string.Format("<script type=\"text/javascript\" src=\"{0}\"></script>",
html.MEDebugReleaseString(fileName, releaseFileName));
return MvcHtmlString.Create(jsTag);
}
А потом, где происходит волшебство ...
public static MvcHtmlString MEDebugReleaseString(this HtmlHelper html, string debugString, string releaseString)
{
string toReturn = debugString;
#if DEBUG
#else
if (!string.IsNullOrEmpty(releaseString))
toReturn = releaseString;
#endif
return MvcHtmlString.Create(toReturn);
}
'' $ для JQuery Я pressumed. Пожалуйста, добавьте библиотеку jquery в свой основной вид – Sherlock
Это может вам помочь, http://stackoverflow.com/questions/885990/linking-javascript-libraries-in-user-controls/886184#886184 –
Спасибо Smit за то, что поделился мной ссылкой .. Это сработало .. – user3106445