Записи с меткой "trick"

26
Дек

master page vs. javascript

   Автор: Aen Sidhe    в программирование

Итак, небольшой туториал на тему ASP .NET.

Там есть master-page. Вполне удобные штуки. Есть соблазн напихать туда всякого, например:

<script type="text/javascript" src="../js/jQuery.js"></script>

Кажется, круто — теперь у меня на всех страницах будет jQuery. Как бы не так. Фишка в том, что относительные пути будут считаться не от master-page, а от content page, которая использует этот мастер. И это большая жопа, на самом деле. Достаточно странице быть не на том же уровне в иерархии каталогов и у нас все скрипты отваливаются.

Замечу, что это касается только скриптов. В остальных случаях (картинки, цсс) работает волшебная тильда. «~» — это путь к головному каталогу приложения.

  1. Решение для тех, у кого сайт всегда в корне домена:
    <script type="text/javascript" src="/js/jQuery.js"></script>
  2. Решение для нормальных людей:
        public static class Extensions
        {
            public static void RegisterScript(this Control page, string scriptFileName)
            {
                RegisterScript(page, scriptFileName, 0);
            }
            public static void RegisterScript(this Control page, string scriptFileName, int index)
            {
                var tag = new HtmlGenericControl("script");
                tag.Attributes.Add("type", "text/javascript");
                tag.Attributes.Add("src", page.ResolveUrl(scriptFileName));
                page.Page.Header.Controls.AddAt(index, tag);
            }
        }

Указание индекса нужно для разруливания зависимостей и вставки скриптов в самое начало элемента head.

Нашёл здесь