powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
16 сообщений из 41, страница 2 из 2
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38462374
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамонuser7320на представление ложится ответственность за целостность скриптов во всех дочерних представлениях этого представления, что не есть хорошо, по-моему (опровергните, если я неправ)
Это нормально, или вы борец за независимость партиал вию? )
Как правило, партиал вью это всегда часть вью, а не на оборот.
А если, допустим вы решили подгружать его на AJAX, то будете тянуть библиотеки и стили за одно?
Я борез за крепкий сон, плотную еду и красивых женщин. А так тоже склоняюсь ко вставке всех либ для паршал вью в родительском вью в секции.

Или вообще на MVC 4 перейду, т. к. писать даже 10 строчек самому лень. ))
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38467925
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,
авторИли вообще на MVC 4 перейду, т. к. писать даже 10 строчек самому лень. ))
Это мне напоминает анекдот про звонок в милицию по поводу дохлой лошади.
сама идея очень проста, создается хранилище для урлов скриптов, и вызывается схема в нужное время в нужном месте.
Остается прально зарядить эти коллекции
код спорный, но принцы понятен.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
public static class Header
    {
        public static MvcHtmlString HeaderRender(this HtmlHelper htmlHelper)
        {
            return MvcHtmlString.Create(ScriptHeader.GetShemaScript(htmlHelper.ViewContext.RequestContext.HttpContext));
        }
    }

   public  static class ScriptHeader
    {
       internal const string ScriptFormat = "<script src=\"{0}\" type=\"text/javascript\"></script>{1}";
       internal const string StyleFormat = "<link href=\"{0}\" rel=\"stylesheet\" type=\"text/css\" />{1}";


       internal static readonly List<string> ListBaseScripts = new List<string>();
       internal static readonly List<string> ListBaseStyle = new List<string>();



       internal static readonly Dictionary<HttpContextBase, List<string>> ListControllerScripts = new Dictionary<HttpContextBase, List<string>>();
       internal static readonly Dictionary<HttpContextBase, List<string>> ListControllerStyle = new Dictionary<HttpContextBase, List<string>>();

        public static void AddScript(string url)
        {
            ListBaseScripts.Add(url);
        }
        public static void AddStyle(string url)
        {
            ListBaseStyle.Add(url);
        }
        public static void AddScript(HttpContextBase key, string url)
        {
            GetValue(key, url, ListControllerScripts);
        }
        public static void AddStyle(HttpContextBase key, string url)
        {
            GetValue(key, url, ListControllerStyle);
        }

        internal static string GetShemaScript(HttpContextBase key)
        {
            var sb = new StringBuilder();
            ///////////////////////////////////////// script
            foreach (var str in ListBaseScripts)
            {
                sb.AppendFormat(ScriptFormat, str,Environment.NewLine);
            }

            List<string> list;
            if (ListControllerScripts.TryGetValue(key, out list))
            {
                foreach (var str in list)
                {
                    sb.AppendFormat(ScriptFormat, str, Environment.NewLine);
                    ListControllerScripts.Remove(key);

                }
            }
            ///////////////////////////////////////// style
            foreach (var str in ListBaseStyle)
            {
                sb.AppendFormat(StyleFormat, str, Environment.NewLine);
            }
            List<string> listS;
            if (ListControllerStyle.TryGetValue(key, out listS))
            {
                foreach (var str in listS)
                {
                    sb.AppendFormat(StyleFormat, str, Environment.NewLine);
                    ListControllerStyle.Remove(key);

                }
            }
            return sb.ToString();
        }

        internal static void GetValue(HttpContextBase key, string url, IDictionary<HttpContextBase, List<string>> lDictionary)
        {
            List<string> list;
            if (lDictionary.TryGetValue(key, out list))
            {
                list.Add(url);
            }
            else
            {
                list = new List<string> { url };
                ListControllerScripts.Add(key, list);
            }
        }
    }


ну изаряжаем
при старте приложения ( эти скрипты будут висеть постоянно)
Код: c#
1.
2.
3.
4.
            ScriptHeader.AddStyle("/Content/Site.css");
            ScriptHeader.AddScript("/Scripts/jquery-1.7.1.min.js");
            ScriptHeader.AddScript("/Scripts/modernizr-2.5.3.js");
            ScriptHeader.AddScript("/Content/Site.css");


динамические
Код: c#
1.
2.
3.
 @{
      ScriptHeader.AddScript(this.Context,"/dsadasdyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyagggggggggggggsdas/nah");
  }


из контроллера
Код: c#
1.
2.
3.
4.
    if (Foo())
            {
                  ScriptHeader.AddScript(HttpContext,"xzcvxczvzcxvxczvvcxzvzcxv");
            }



ну и вызываем их при рендеринге на мастере
Код: c#
1.
2.
3.
4.
5.
6.
7.
<head>
    <meta charset="utf-8" />
    <title>@ViewBag.Title</title>
  
       @Html.HeaderRender()
   
</head>
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38468020
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степи,

Как работает пример в части ListControllerScripts и ListControllerStyles (и, соответственно, AddScript и AddStyle с двумя параметрами) - не понял. В частности, в GetValue, если if вернёт true, то что делать с list? Зачем вообще эта локальная переменная?

Потом, не будет ли слишком жирно в смысле потребления памяти хранить схему скриптов на каждый контекст (каждый запрос)? Ну и в довесок все контексты в виде ключей?

Принцип-то понятен - те же секции его и реализуют. Разве что там ограничение, связанное с частичными представлениями.


Пока решил остановиться на варианте 2 .
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38468046
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,
учи мат. часть
что до потребления памяти, дак это крохи 28х(4х28)байт плюс указатели на строки, ключи
ключи так и так будут создаваться не зависимо используешь ты это или нет только разница в размере указателя..
200 байт погоду не делают, зато можно развить мысль, слияние скриптов, сжатие скриптов, подключение в зависимости
от чего то и тд.Таких приблуд написано очень много, народ пользуется, тебе как бы рановато, учи мат часть секций хватит..
авторНу и в довесок все контексты в виде ключей? можешь использовать маршрут, никто не запрещает.
тогда и чистить словарь по ключу не надо, все зависит от настроения..
контексты - указатели на контексты.., контектсы сами живут, не зависимо от моего желания..
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38468047
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
28+(4х28)
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38468093
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо. Я всё же решил пока остановиться на секциях. Когда станет видно, что их недостаточно, тогда подумаю о вашем и подобных решениях.
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38468476
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степисама идея очень проста, создается хранилище для урлов скриптов, и вызывается схема в нужное время в нужном месте.

А сам-то ссылку давал про бандлы, там идея другая.
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38468673
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПарамонГде-то в степисама идея очень проста, создается хранилище для урлов скриптов, и вызывается схема в нужное время в нужном месте.

А сам-то ссылку давал про бандлы, там идея другая.
Бандлы в MVC 4, а у меня 3. До 4 апгрейдиться как-то нетривиально (я целую статью нашёл - пока не смотрел), так что я пока это отложил. Да и там, вроде, вместо Membership провайдера авторизации другой использован - не знаю, как со моей старой схемой всё это будет работать. Я ещё не настолько опытен, чтобы вот так всё с наскока менять.
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38469229
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон,
Уверяю тебя, идея то же самое, Xранилище->Инициализация->Рендеринг по требованию
авторСпасибо. Я всё же решил пока остановиться на секциях. Когда станет видно, что их недостаточно, тогда подумаю о вашем и подобных решениях.
авторИли вообще на MVC 4 перейду, т. к. писать даже 10 строчек самому лень. ))
Сам код просто для научного познания, в практической рализации не представляется ценным, в силу того что не тестирован и не оброс
жирком, ну разве что применил что то похожее для рендеринга контрола, без декларативного объявления рендеринга скрипта.
но не об этом.Вам нравятся бандлы, но у вас руки коротки с мувеце 3 их захавать, так знайте через nuget они свободно вживляются в ваш проект ( уже давно) и что очень важно для Вас - просто одним кликом мышки, ну а там ...... ссылку я дал..
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38469233
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38469509
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиuser7320,

https://www.nuget.org/packages/BundleTransformer.Core/1.8.11
Спасибо.
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38470044
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиУверяю тебя, идея то же самое, Xранилище->Инициализация->Рендеринг по требованию
Это идея всего сущего :)
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38470993
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотрел - оказывается, библиотеки скриптов можно подключать и в произвольном месте разметки. Щас глянул на свою форму, что мне мастер создал, а там ненавязчивая валидация прямо до формы в div подключается - и ничего, всё работает.

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>

Тогда вообще непонятно, зачем с секциями заморачиваться.

Это что, так по стандарту можно, или это выпендрёж студиевских мастеров?
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38471036
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://www.youtube.com/user/VANOMAS
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38471126
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320"только в head! под страхом смерти!"
Я стараюсь как раз в футере )

user7320"фреймворки по подключению скриптов и стилей" и прочий винегрет?
Это для минификации и оптимизации.

ps
Ты уже год мусолишь тему, можно было дисер написать за это время )
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38471186
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамонps
Ты уже год мусолишь тему, можно было дисер написать за это время )
Я просто время от времени к ней возвращаюсь. Диссер за меня специально обученные студенты пишут (каждому по главе раздал - "магистерская" называется или "диплом" - я только подрихтовываю и вычищаю явный бред).
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]