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

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

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

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

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

Код: 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
06.08.2012, 12:13
    #37905442
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
user7320, объединить поодключение внешнего скрипта и встроенного в страницу нельзя. Надо писать два блока <script>. Сами же блоки могуи располагаться на странице в любом месте.
...
Рейтинг: 0 / 0
06.08.2012, 12:54
    #37905504
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
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
06.08.2012, 13:45
    #37905603
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
user7320Получается, что если я затолкаю подключение внешнего скрипта в head шаблона всех страниц, то этот скрипт будет у меня грузиться для ЛЮБОЙ страницы?
Он будет грузиться на всех страницах использующих этот шаблон. Если все стоаницы твоего сайта используют единый шаблон, то, разумеется, скрипт будет грузиться на всех страницах.

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

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


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

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

Неправильно думаешь. Объявить можно одну секцию и грузить туда то, что нужно для каждого вью.
...
Рейтинг: 0 / 0
11.11.2013, 18:35
    #38460910
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
Парамон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
11.11.2013, 18:37
    #38460916
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
В результате в конкрентном ответе сервера на конкретный запрос в head оказываются только те секции, представления которых в данном ответе используются.
...
Рейтинг: 0 / 0
11.11.2013, 19:51
    #38461007
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
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
12.11.2013, 00:45
    #38461226
user7320
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
Парамон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
12.11.2013, 12:38
    #38461654
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Где размещать скрипты в теле HTML в контексте проекта ASP.NET MVC?
user7320Что, если надо скрипты поддерживать в частичных представлениях, но при этом сделать их реюзабельными?

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

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

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

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

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

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

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

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


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