Makale numarası: 941955 - Son Gözden Geçirme: 10 Ekim 2007 Çarşamba - Gözden geçirme: 1.1

URL barındıran SharePoint Web sitesinin uluslararası karakterler içerdiğinde _doPostBack() işlevini kullanan ASP.NET AJAX 1.0 UpdatePanel denetimi içeren BIR Web Bölümü çalışmıyor

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hepsini aç | Hepsini kapa

Belirtiler

Şu senaryoyu inceleyin:
  • Microsoft AJAX 1.0 Denetim araç seti Microsoft ASP.NET veya Microsoft Windows için Microsoft Office SharePoint Server 2007 Web sitesi veya özel Web bölümü oluşturmak, ASP.NET AJAX 1.0 uzantıları için kullandığınız SharePoint Services 3.0 Web sitesi.
  • Özel Web Bölümü LinkButton denetim gibi _doPostBack() yer alan bir işlev içeren bir UpdatePanel denetimi içerir.
  • Özel Web Bölümü, bir Windows SharePoint Services 3.0 Web sitesi için bir SharePoint Services 2007 Web sitesi veya ekleyin. Windows SharePoint Services 3.0 Web sitesinin URL'SINI veya SharePoint Server 2007 Web sitesi, uluslararası karakterler veya dile özgü karakterler içeriyor.
  • Windows SharePoint Services 3.0 Web sitesi veya SharePoint Server 2007 Web sitesini ziyaret edin. Daha sonra seçilen Web Bölümü içeriğini güncelleştirmek deneyin.
Bu senaryoda, zaman uyumsuz bir ASP.NET AJAX postback istek yerine normal postback isteği oluşur.

Neden

Bu sorun, Windows SharePoint Services'ı ve ASP.NET AJAX, bazı form eylem türlerini önbelleğe nedeniyle oluşur. Bu nedenle, çakışmaları ortaya çıkabilir.

Pratik Çözüm

Bu soruna geçici bir çözüm bulmak için <a0></a0>, bir SharePoint Server 2007'de veya Windows SharePoint Services 3.0 Web Bölümünü bir UpdatePanel denetim eklemek için aşağıdaki örnek benzer bir kod kullanın.
 private void EnsureUpdatePanelFixups()
        {
               if (this.Page.Form != null)
               {
                   String fixupScript = @"
_spBodyOnLoadFunctionNames.push(""_initFormActionAjax"");
function _initFormActionAjax()
{
    if (_spEscapedFormAction == document.forms[0].action)
    {
        document.forms[0]._initialAction = document.forms[0].action;
    }
}
var RestoreToOriginalFormActionCore = RestoreToOriginalFormAction;
RestoreToOriginalFormAction = function()
{
    if (_spOriginalFormAction != null)
    {
        RestoreToOriginalFormActionCore();
        document.forms[0]._initialAction = document.forms[0].action;
    }
}
aşağıdaki kod, önceki UpdatePanel denetimi içeren bir Web Bölümü'nün bir örnektir. Additionally, the EnsureUpdatePanelFixups method is used to register the Script Manager control in the Web Part.
 public class AjaxUpdatePanelPart : WebPart
    {
        private Label label;
        private TextBox textBox;
        protected override void  CreateChildControls()
        {
            base.CreateChildControls();
            this.EnsureUpdatePanelFixups();
            UpdatePanel up = new UpdatePanel();
            up.ID = "UpdatePanel1";
            up.ChildrenAsTriggers = true;
            up.UpdateMode = UpdatePanelUpdateMode.Conditional;
            this.Controls.Add(up);
            this.textBox = new TextBox();
            this.textBox.ID = "TextBox";
            up.ContentTemplateContainer.Controls.Add(this.textBox);
            this.label = new Label();
            this.label.Text = "Enter your name.";
            up.ContentTemplateContainer.Controls.Add(this.label);
            LinkButton button = new LinkButton();
            button.Text = "Say Hello";
            button.ID = "HelloButton";  // Some controls need an ID to make them work with AJAX postbacks.
            button.Click += new EventHandler(HandleButtonClick);
            up.ContentTemplateContainer.Controls.Add(button);
        }
        private void HandleButtonClick(object sender, EventArgs eventArgs)
        {
            this.label.Text = "Hello " + this.textBox.Text;
        }
        private void EnsureUpdatePanelFixups()
        {
               if (this.Page.Form != null)
               {
                   String fixupScript = @"
_spBodyOnLoadFunctionNames.push(""_initFormActionAjax"");
function _initFormActionAjax()
{
    if (_spEscapedFormAction == document.forms[0].action)
    {
        document.forms[0]._initialAction = document.forms[0].action;
    }
}
var RestoreToOriginalFormActionCore = RestoreToOriginalFormAction;
RestoreToOriginalFormAction = function()
{
    if (_spOriginalFormAction != null)
    {
        RestoreToOriginalFormActionCore();
        document.forms[0]._initialAction = document.forms[0].action;
    }
}
";
                ScriptManager.RegisterStartupScript(this, typeof(AjaxUpdatePanelPart), "UpdatePanelFixup", fixupScript, true);
            }
        }
    }

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Office SharePoint Server 2007
  • Microsoft Windows SharePoint Services 3.0
Anahtar Kelimeler: 
kbmt kbexpertiseinter kbtshoot kbprb KB941955 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:941955  (http://support.microsoft.com/kb/941955/en-us/ )