Надлежащий способ включать сценарии в страницу asp.net

У меня есть приложение ASP.NET, которое использует смесь Ajax ASP.NET (Включая UpdatePanel) и jQuery, записанный несколькими разработчиками отличающихся фонов.

Некоторые включенные сценарии в самом ScriptManager <asp:ScriptManager><Scripts><asp:ScriptReference...., в то время как другие используются Page.ClientScript.RegisterClientScriptInclude в коде позади, и другие использовал прямо <script src=""> включать сценарии.

Я хотел бы консолидировать к единственному способу обработать это, если это возможно, но я не уверен, что профессионалы/недостатки каждого пути и какой путь предпочтен.


Один пример был бы:

protected override void Render(HtmlTextWriter writer)
 {
    Page.ClientScript.RegisterClientScriptInclude("jQuery", ResolveClientUrl("~/scripts/jquery/js/jquery-1.4.2.min.js"));    
    base.Render(writer);
}

по сравнению с

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/scripts/jquery/js/jquery-1.4.2.min.js" />
    </Scripts>
</asp:ScriptManager>

по сравнению с

<script src="Scripts/jQuery/js/jquery-1.4.2.min.js" type="text/javascript"></script>
10
задан Greg 7 July 2010 в 19:47
поделиться

3 ответа

Не всегда можно включить в разметку весь сценарий.
Если сценарий зависит от динамических данных, вам необходимо «внедрить» сценарий из кода.

Мое правило - всегда стараться по возможности избегать "внедрения" скрипта из кода позади и использовать это только в крайнем случае.

Изменить:
Использование диспетчера сценариев предпочтительнее, если у вас много разных файлов сценариев.
При использовании диспетчера сценариев все сценарии будут «объединены» в один файл. Это влияет на то, как браузер загружает скрипты. Браузеры обычно имеют ограничение в 2 одновременных подключения, и если у вас 10 скриптов, вам нужно будет загрузить их все за 5 шагов. Scriptmanager позаботится о том, чтобы все происходило за один шаг.

6
ответ дан 3 December 2019 в 23:11
поделиться

Я бы рекомендовал загрузчик сценариев Ajax (если вы работаете в среде asp.net, asp.net ajax library, jquery)

http://www.asp.net/ajaxlibrary/Ajax%20Script%20Loader.ashx

http://www.asp.net/ajaxlibrary/HOW%20TO%20Combine%20Scripts%20using%20the%20Script%20Loader.ashx

1
ответ дан 3 December 2019 в 23:11
поделиться

является декларативным эквивалентом вызова ScriptManager.RegisterScriptBlock () , как и любое другое объявление элемента управления asp.net. аналогично выполнению программного Controls.Add () .

При этом на самом деле не существует «предпочтительного пути». Если вы создаете распространяемые веб-элементы управления, вам нужно будет вызывать различные методы .RegisterScript ... () из процедур настройки вашего элемента управления, а не полагаться на добавление разметки пользователем.

Если вы просто хотите включить скрипты на веб-сайт, вероятно, удобнее использовать метод разметки.

Если вы добавляете сценарии во время вызовов Ajax, вам следует использовать для этого ScriptManager . Если вы добавляете сценарии в обычные обратные передачи, то для этого вам нужно использовать ClientScriptManager .

Итак ... сложно перечислить плюсы и минусы. В вашем случае, если вы не создаете распространяемый код, наиболее очевидным и простым способом является включение ссылок на скрипты с помощью разметки, поскольку она имеет тенденцию быть более заметной. Но я не уверен, что вы сможете объединить каждое вхождение в один метод, потому что все методы существуют по какой-то причине, и вам может потребоваться использовать более одного.

7
ответ дан 3 December 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: