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

Код: html
1.
2.
<script type="text/javascript" src="@Url.Content("~/Scripts/Silverlight.js")">
</script>



Код: html
1.
2.
3.
4.
5.
6.
<script type="text/javascript">
	function onSilverlightError(sender, args)
        {
            ...
	}
</script>



1. Где мне их разместить, если учесть, что плагин появляется только на одной из страниц, и я не хочу, чтобы клиент грузил библиотеку Silverlight.js при загрузке любой другой страницы тоже? Т. е. мне, как я понял, в этом случае нельзя размещать первый блок внутри тега <head> в шаблоне страницы _Layout.cshtml.

2. И нужно ли их делить на два блока (я скопировал их из умолчального приложения для страницы с Сильверлайт-плагином из Вижуал Стьюдио), или можно объединить в один? А то мне кажется, что первый блок - просто указание, откуда брать библиотеку для скриптов, работающих с Сильверлайтом, а второй - собственно скрипт. Может, достаточно указать так:

Код: html
1.
2.
3.
4.
5.
6.
<script type="text/javascript" src="@Url.Content("~/Scripts/Silverlight.js")">
	function onSilverlightError(sender, args)
        {
            ...
	}
</script>


??

Ну и собственно, как сведения двух вопросов вместе. Чтобы сделать как я хочу, достаточно ли просто поместить последний блок кода просто после элемента <object> с плагином Сильверлайт?
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #37903505
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторТ. е. мне, как я понял, в этом случае нельзя размещать первый блок внутри тега <head> в шаблоне страницы _Layout.cshtml.
_Layout.cshtml - это страница-шаблон для всех страниц, в качестве уточнения. Т. е. если в её тег head поместить упоминание библиотеки скрипта, то эту библиотеку будут грузить все страницы вообще, чего мне не нужно.
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #37903666
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,

В Section
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #37903737
Pavluha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
user7320,

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

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

Код: html
1.
2.
3.
4.
5.
6.
<script type="text/javascript" src="@Url.Content("~/Scripts/Silverlight.js")">
	function onSilverlightError(sender, args)
        {
            ...
	}
</script>



Или обязательно надо атрибут src указывать только на главной вьюхе в теге head?

А во-вторых, в каком месте страницы (вьюхи) этот скрипт размещать - сразу после тега object, после div, в котором этот тег, или как? Вот у меня такой код для примера:

Код: html
1.
2.
3.
4.
5.
<div id="silverlightControlHost">
        <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="200px" height="40px">
            ...
	</object>
</div>


Где поместить скрипты? Сразу после обджекта, или после дива, или куда-то ещё?
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #37905442
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320, объединить поодключение внешнего скрипта и встроенного в страницу нельзя. Надо писать два блока <script>. Сами же блоки могуи располагаться на странице в любом месте.
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #37905504
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bazileuser7320, объединить поодключение внешнего скрипта и встроенного в страницу нельзя. Надо писать два блока <script>. Сами же блоки могуи располагаться на странице в любом месте.
Извиняюсь за небольшой ликбез (но что-то я не нашёл разъяснений в Инете по этому поводу пока). Получается, что если я затолкаю подключение внешнего скрипта в head шаблона всех страниц, то этот скрипт будет у меня грузиться для ЛЮБОЙ страницы? А если я хочу, чтобы скрипт подключался только для нужной страницы, то нужно из head перенести подключение в код нужной мне страницы, но ДО самого скрипта. Т. е., скажем, если скрипт относится к конкретному объекту object, то лучше всего после этого object поместить подключение внешней библиотеки скрипта, а затем сам скрипт, так?

Т. е. если я сделаю так:

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<div id="silverlightControlHost">
        <object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="200px" height="40px">
            ...
	</object>
	
	<script type="text/javascript" src="@Url.Content("~/Scripts/Silverlight.js")" />

	<script type="text/javascript">
		function onSilverlightError(sender, args)
		{
			...
		}
	</script>
</div>



То всё должно заработать так, как я хочу - грузить скриптовую библиотеку только на этой странице, и чтобы скрипт взаимодействовал с объектом object?
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #37905603
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Получается, что если я затолкаю подключение внешнего скрипта в head шаблона всех страниц, то этот скрипт будет у меня грузиться для ЛЮБОЙ страницы?
Он будет грузиться на всех страницах использующих этот шаблон. Если все стоаницы твоего сайта используют единый шаблон, то, разумеется, скрипт будет грузиться на всех страницах.

user7320А если я хочу, чтобы скрипт подключался только для нужной страницы, то нужно из head перенести подключение в код нужной мне страницы, но ДО самого скрипта.
Необязательно. Тебе уже дали совет - использовать section или подключать скрипт в той/тех view где используется Silverlight. Кроме этого можно создать отдельный layout файл. ASP.NET MVC 3: Layouts and Sections with Razor .

user7320То всё должно заработать так, как я хочу - грузить скриптовую библиотеку только на этой странице, и чтобы скрипт взаимодействовал с объектом object?
Возьми и проверь.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38458201
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, с секциями работает. Так ещё и стили можно так подключать - только для тех страниц, для которых они предназначены!.. Одна проблема - теперь, если увлекаться этим, то в head-теге Lauout-файла представления слишком много @RenderSection - как от этого избавиться?
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38458216
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ничего лучше, кроме @RenderSection("Sections"), где "Sections" - секция с перечнем всех остальных секций, содержащаяся в отдельной вьюхе (тогда через RenderAction, скорее всего) или во _ViewStart. Кто-нибудь знает способ лучше?
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38459208
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320head-теге Lauout-файла представления слишком много @RenderSection - как от этого избавиться?
Одного там хватает.
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38459778
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамонuser7320head-теге Lauout-файла представления слишком много @RenderSection - как от этого избавиться?
Одного там хватает.
В смысле, одного? Одним вызовом вы только одну секцию и отрендерите. А если у меня много секций?
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38460075
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320В смысле, одного? Одним вызовом вы только одну секцию и отрендерите. А если у меня много секций?
Одной секции в хедере достаточно, зачем там много?
Код: html
1.
2.
3.
4.
<head>
.....
@RenderSection("Header", false)
</head>
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38460556
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамонuser7320В смысле, одного? Одним вызовом вы только одну секцию и отрендерите. А если у меня много секций?
Одной секции в хедере достаточно, зачем там много?
Код: html
1.
2.
3.
4.
<head>
.....
@RenderSection("Header", false)
</head>


Потому что у меня много секций, и я хочу отрендерить их все, если это потребуется.

Вы, наверное, не поняли. Задача - загружать только те стили и скрипты, которые нужны на данный момент. И если какая-нибудь jQuery нужна, грубо говоря, на каждой странице, то какой-нибудь knockoutjs - не на каждой. Вот я и вставляю секции в некоторых представлениях (ASP.NET MVC), в которых (секциях) подключаются нужные библиотеки и стили. А поскольку подключаются они в head, то сколько секций объявлено, столько и нужно отработать. Или я неправильно думаю?
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38460701
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320А поскольку подключаются они в head, то сколько секций объявлено, столько и нужно отработать. Или я неправильно думаю?

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

Неправильно думаешь. Объявить можно одну секцию и грузить туда то, что нужно для каждого вью.
Не понял. Как?

Сейчас у меня так:

view1:

Код: c#
1.
2.
@section s1
{}



...

viewN:

Код: c#
1.
2.
@section sN
{}



_Layout:

Код: c#
1.
2.
3.
4.
5.
6.
<head>
...
@RenderSection("s1", false)
...
@RenderSection("sN", false)
</head>
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38460916
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В результате в конкрентном ответе сервера на конкретный запрос в head оказываются только те секции, представления которых в данном ответе используются.
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38461007
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
view1:

Код: c#
1.
2.
@section Header
{}



...

viewN:

Код: c#
1.
2.
@section Header
{}



_Layout:

Код: c#
1.
2.
3.
4.
<head>
...
@RenderSection("Header", false)
</head>



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

Код: c#
1.
2.
@section Header
{}



...

viewN:

Код: c#
1.
2.
@section Header
{}



_Layout:

Код: c#
1.
2.
3.
4.
<head>
...
@RenderSection("Header", false)
</head>



А если так? )
Да, пожалуй, это будет работать.




Тут ещё возник вопрос про частичные представления. Что, если надо скрипты поддерживать в частичных представлениях, но при этом сделать их реюзабельными? Секции же не предназначены для использования в частичных представлениях?

Везде советуют в основном какие-то решения, основанные на то хелперах, то ещё на каком-то коде. Но я самое удобное (как мне кажется) что нашёл - это писать эти скрипты в отдельных частичных представлениях и рендерить их через @RenderPartial в любых других представлениях, где они нужны, включая частичные.

И последнее. Как я понимаю, все эти проблемы решают хелперы Scripts.Render и Styles.Render в MVC 4, позволяющие рендерить стили и скрипты в любом представлении в любом его месте? Т. е. с этими хелперами возня с секциями для целей разграничения скриптов и стилей по представлениям не нужна? Я вот тут вижу, что автор применяет Scripts.Render не только в head, но и в любом месте вообще (искать по "The following markup from the Views\Shared\_Layout.cshtml file shows how the default ASP.NET internet project views reference CSS and JavaScript bundles").
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38461654
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320Что, если надо скрипты поддерживать в частичных представлениях, но при этом сделать их реюзабельными?

Если скрипт вынесен в библиотеку, он уже реюзабельный )

user7320Я вот тут вижу, что автор применяет Scripts.Render не только в head, но и в любом месте вообще

Не везде а либо в хедере, либо в футере. (перед </body>)
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38461725
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамонuser7320Что, если надо скрипты поддерживать в частичных представлениях, но при этом сделать их реюзабельными?

Если скрипт вынесен в библиотеку, он уже реюзабельный )
1. Т. е. получается, что при надобности прикреплять реюзабельные скрипты к частичным представлениями, лучше уже работать не с секциями, а с линковкой нужных библиотек скриптов прямо в частичном представлении (где-нибудь в конце)? Или всё же секции остаются более лучшим подходом?

2. В случае с секциями, как я понимаю, нужно заранее знать, сколько и каких частичных представлений будет в данном представлении, и какие библиотеки они будут использовать (нельзя использовать секции в частичных представлениях - by design, насколько я знаю). После этого в представлении нужно в секции заранее залинковать все библиотеки, используемые во всех частичных представлениях данного представления? Я правильно понимаю?

3. Если в 2 я правильно понимаю, то получается, что на представление ложится ответственность за целостность скриптов во всех дочерних представлениях этого представления, что не есть хорошо, по-моему (опровергните, если я неправ). Хорошо, когда каждое частичное представление само отвечает за свои скрипты. Тогда приходим к 1.

4. Но проблема в 1 и 3 в том, что линковка скриптов даже в конце частичного представления будет в окончательном родительском представлении выглядеть как линковка посреди разметки - т. е. ни в head, ни в footer. Получается, что ни один из вышеперечисленных подходов не является лучшим. Какой тогда лучший?
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38461757
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38462038
user7320
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то в степиuser7320, http://metanit.com/sharp/mvc/15.1.php
http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

Только у меня всё равно MVC 3.
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38462178
Фотография Где-то в степи
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320,
какая разница в версиях объясните?
я дал вам принцы, а реализовать его в любой версии можно 10 строчками кода, в 4 он на уровне языка, в остальных реализуйте
в виде расширения, в формах я вообще можно декларировано прикрутить подгруздку скриптов через атрибуты т.с. вы хозяин своей жизни...
...
Рейтинг: 0 / 0
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
    #38462278
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
user7320на представление ложится ответственность за целостность скриптов во всех дочерних представлениях этого представления, что не есть хорошо, по-моему (опровергните, если я неправ)
Это нормально, или вы борец за независимость партиал вию? )
Как правило, партиал вью это всегда часть вью, а не на оборот.
А если, допустим вы решили подгружать его на AJAX, то будете тянуть библиотеки и стили за одно?
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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