Asp.Net Server.Transfer проблема с набором инструментов ScriptManager - PullRequest
2 голосов
/ 02 июня 2011

Я работаю над сайтом, на котором есть мастер-инструментарий на главной странице.Моя проблема заключается в переходе на страницу, которая выполняет server.transfer.Я на самом деле также использую перенаправления URL, но, насколько я могу судить, это не имеет никакого отношения к проблеме.

Если я изменю код на Response.Redirect, страница перенаправляет нормально, но это не такфункциональность, которую я ищу, мне нужно сохранить дружественные для SEO URL.

Например, например, в коде Page1.aspx есть Server.Transfer для Page2.aspx.Что я диагностировал, так это то, что диспетчер скриптов добавляет ссылку на скрипт на страницу, которую вы просматриваете.Итак, если бы я должен был перейти прямо к Page2.aspx, добавленный скрипт был бы

<script src="/Page2.aspx?_TSM_HiddenField_=ctl00_ctl00_ToolkitScriptManager1_HiddenField... etc

Однако, с помощью Server.Transfer, он пытается найти

<script src="/Page1.aspx?_TSM_HiddenField_=ctl00_ctl00_ToolkitScriptManager1_HiddenField... etc

Как я могу сказать ScriptManager использовать конечный пункт назначения для файла сценария?Я пытался использовать магические настройки в TSM, но пока не повезло.

1 Ответ

2 голосов
/ 03 июня 2011

После некоторых копаний и испытаний я смог заставить это работать.Мне пришлось переместить мои сценарии, определенные в заголовке, в TSM и использовать CompositeScripts:

<act:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server" CombineScripts="false">
            <CompositeScript>
                <Scripts>
                    <asp:ScriptReference Path="/js/jquery.1.4.2.min.js" />
                    <asp:ScriptReference Path="/js/jquery-ui.1.8.5.min.js" />
                    <asp:ScriptReference Path="/js/jlEmbed.js" />
                </Scripts>
            </CompositeScript>
        </act:ToolkitScriptManager>

Что я нахожу, если я установлю CombineScripts = true, TSM скомпилирует все файлы jsв свой собственный внутренний скрипт - и затем все еще поместите скрипт, ссылающийся на страницу, на которой он находится.Если включить CombineScripts = false, он по-прежнему компилирует файлы js, выполняет их по отдельности, а также для ссылки на скрипт страницы.

...