ASP.NET 3.5 SP1 добавляет замечательную новую функцию ScriptCombining к объекту ScriptManager, как показано на это видео. Однако он только демонстрирует, как использовать эту функцию с ScriptManager на той же странице. Я хотел бы использовать эту функцию на сайте, где диспетчер сценариев находится на главной странице, но не могу понять, как программно добавить в диспетчер сценарии, которые мне нужны для каждой страницы. Я нашел этот пост, чтобы использовать его в качестве отправной точки, но я не очень далеко продвинулся. может кто-нибудь протянуть мне руку помощи?
Спасибо, Дэн
Ответ 1 · рейтинг 2 · TonyB
Попробуйте это:
ScriptReference SRef = new ScriptReference();
SRef.Path = "~/Scripts/Script.js";
ScriptManager.GetCurrent(Page).CompositeScript.Scripts.Add(SRef);
Это получит текущий диспетчер сценариев (даже если он находится на главной странице) и добавит ссылку на сценарий в свойства CompositeScript.
Ответ 2 · рейтинг 1 · Chris Herring
Вы также можете сделать это в разметке с помощью ScriptManagerProxy. .
Вы можете добавить ScriptManager на главную страницу, например.
<asp:ScriptManager ID="ScriptManager" runat="server">
<CompositeScript>
<Scripts>
<asp:ScriptReference name="WebForms.js" assembly="System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<asp:ScriptReference name="MicrosoftAjax.js" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<asp:ScriptReference name="MicrosoftAjaxWebForms.js" assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</Scripts>
</CompositeScript>
</asp:ScriptManager>
А затем добавьте ScriptManagerProxy на страницу содержимого, например.
<asp:Content ID="HomeContent" ContentPlaceHolderID="PlaceHolder" runat="Server">
<asp:ScriptManagerProxy runat="server">
<CompositeScript>
<Scripts>
<asp:ScriptReference Path="~/yourscript.js" />
</Scripts>
</CompositeScript>
</asp:ScriptManagerProxy>