2

SharePoint에서 제대로 작동하지 않는 asp : ScriptManager에 문제가 있습니다. 나는 EnableScriptGlobalization = "true"를 설정하여 ASP.NET AJAX의 Sys.CultureInfo 객체를 사용할 수 있지만 스크립트가 잘못된 순서로 출력되기 때문에 작동하지 않습니다. 동일한 코드가 일반 ASP.NET 사이트에서 올바르게 작동하므로이 문제는 SharePoint와 관련이있는 것 같습니다. SharePoint 2007에서 제대로 작동했지만.ScriptManager 전역 화 문제

이 간단한 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 /> 

I 정규 ASP.NET 웹 사이트 .aspx 페이지에이 제어를 포함하고, 서버 측에서-SE를 SV하는 배양 설정

는 출력이 예상되고있다.

서버 측 문화 : SV-SE

클라이언트 측 문화 : SV-SE

하지만하여 SharePoint 2010 사이트의 페이지에 같은 UserControl을 넣을 때, 스웨덴어로 사이트 로케일을 설정하고 설정 SV-SE

클라이언트 측 문화 : EN-US

EnableScriptGlobalization = "true"를 마스터 페이지에서, 나는 여전히 출력

서버 측 문화를 얻을 0

이 문제를 파헤 치기 시작했을 때 ScriptManager에서 출력하는 스크립트 블록의 순서가 잘못되었다는 것을 알게되었습니다. EnableScriptGlobalization이 true로 설정되면 ScriptManager는 __cultureInfo 변수를 정의하는 스크립트 블록을 출력합니다.이 스크립트 블록은 Sys.CultureInfo를 초기화하는 데 사용됩니다. 이 변수는 MicrosoftAjax.js가로드되기 전에 정의되어야합니다. 그렇지 않으면 en-US culture로 기본 설정됩니다.

ASP.NET 사이트에서 제대로 작동합니다. __cultureInfo 변수가 먼저 정의 된 다음 MicrosoftAjax.js가 WebResource.axd에서로드됩니다. 그러나 SharePoint에서는 MicrosoftAjax.js가 훨씬 먼저로드되고 __cultureInfo 변수가 너무 늦게 정의됩니다.

누구든지이 문제에 대한 해결책이나 해결책을 알고 있습니까?

답변

-1

나는 한 가지 해결책을 제시하고 있으며, 완벽하게 작동하고 있습니다. 페이지의 끝 (마스터 페이지)

<script> 
if (__cultureInfo) 
{ 
    Sys.CultureInfo.CurrentCulture = Sys.CultureInfo._parse(__cultureInfo); 
    delete __cultureInfo; 
} 
</script> 

UPDATE에 다음을 추가 : 전에, 지금 위의 하나가 제대로 업데이트되는 잘못된 해결책을 썼다.