У меня проблема с asp: ScriptManager не работает правильно под SharePoint.Я установил EnableScriptGlobalization = "true", чтобы иметь возможность использовать объект Sys.CultureInfo в ASP.NET AJAX, но из-за того, что скрипт выводится в неправильном порядке, он не работает.Тот же код работает правильно на простом сайте ASP.NET, поэтому проблема, похоже, связана с SharePoint.Хотя в SharePoint 2007 все работало правильно.
Чтобы воспроизвести проблему, я создал этот простой usercontrol CultureControl.ascx.
<%@ Control Language="C#" %>
Server side culture: <%= System.Threading.Thread.CurrentThread.CurrentCulture.Name %><br />
Client side culture: <script type="text/javascript">document.write(Sys.CultureInfo.CurrentCulture.name);</script><br />
Когда я включаю этот элемент управления в обычную сеть ASP.NETsite .aspx page, и установите язык sv-SE на стороне сервера, вывод будет таким, как ожидалось.
Язык сервера: sv-SE
Язык клиента: sv-SE
Но когда я помещаю тот же пользовательский контроль на страницу сайта SharePoint 2010, устанавливаю региональный языковой стандарт сайта и устанавливаю EnableScriptGlobalization = "true" на главной странице, я все равно получаю вывод
Культура на стороне сервера: sv-SE
Культура на стороне клиента: en-US
Когда я начал копаться в этой проблеме, я заметил, что причина в том, что скрипт блокирует вывод ScriptManagerв неправильном порядке.Когда EnableScriptGlobalization установлен в значение true, ScriptManager выводит блок сценария, который определяет переменную __cultureInfo, которая затем используется для инициализации Sys.CultureInfo.Эта переменная должна быть определена до загрузки MicrosoftAjax.js, в противном случае она будет по умолчанию принята в среде en-US.
На сайте ASP.NET это работает правильно.Сначала определяется переменная __cultureInfo, затем из WebResource.axd загружается файл MicrosoftAjax.js.Но в SharePoint MicrosoftAjax.js загружается намного раньше, а переменная __cultureInfo определена слишком поздно.
Кто-нибудь знает решение или обходной путь для этой проблемы?