Слишком много файлов JavaScript и CSS на моей главной странице ASP.NET MVC 2? - PullRequest
2 голосов
/ 18 мая 2010

Я использую EditorTemplate DateTime.ascx в своем проекте ASP.NET MVC 2.

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime>" %>
<%: Html.TextBox(String.Empty, Model.ToString("M/dd/yyyy h:mm tt")) %>
<script type="text/javascript">
    $(function () {
        $('#<%: ViewData.TemplateInfo.GetFullHtmlFieldId(String.Empty) %>').AnyTime_picker({
            format: "%c/%d/%Y %l:%i %p"
        });
    });
</script>

При этом используется библиотека JavaScript Any + Time ™ для jQuery, автор Andrew MAndrews III.

Я добавил эти библиотечные файлы (anytimec.js и anytimec.css) в раздел <head> моей главной страницы.

Вместо того, чтобы включать эти JavaScript и каскадированиеФайлы таблиц стилей на каждой странице моего веб-сайта как я могу вместо этого включать файлы .js и .css только на страницы, которые в них нуждаются - страницы, которые редактируют значение типа DateTime?

Ответы [ 2 ]

1 голос
/ 20 мая 2010

В вашем мастере:

<asp:ContentPlaceHolder ID="Scripts" runat="server" />

И в представлениях (aspx), которые будут использовать EditorTemplate / плагин:

<asp:Content ID="indexScripts" ContentPlaceHolderID="Scripts" runat="server">
    <script type="text/javascript" src="anytime.js"></script>
</asp:Content>
1 голос
/ 20 мая 2010

Первая идея, которая приходит в голову =>

Шаблон:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<DateTime>" %>
<%: Html.TextBox(String.Empty, Model.ToString("M/dd/yyyy h:mm tt")) %>
<script type="text/javascript">
    $(function () {
        MakeSureAnyTimeIsIncluded();
        $('#<%: ViewData.TemplateInfo.GetFullHtmlFieldId(String.Empty) %>').AnyTime_picker({
            format: "%c/%d/%Y %l:%i %p"
        });
    });
</script>

главная страница или общий внешний JS-файл:

  function MakeSureAnyTimeIsIncluded(){
    if (!anyTimeIsIncluded)
      //document.write(<script src="correct url") something like that
      anyTimeIsIncluded=true;
  }
...