Artikel-ID: 941955 - Geändert am: Dienstag, 3. Juni 2008 - Version: 1.1

Ein Webpart mit einem ASP.NET AJAX 1.0-UpdatePanel-Steuerelement, das die Funktion "_doPostBack()" verwendet, funktioniert nicht, wenn der URL der SharePoint-Hostwebsite internationale Zeichen enthält

SystemtippDieser Artikel bezieht sich auf ein anderes Betriebssystem als das von Ihnen verwendete. Für Sie möglicherweise nicht relevante Artikelinhalte wurden deaktiviert.
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
941955  (http://support.microsoft.com/kb/941955/EN-US/ ) A Web Part that contains an ASP.NET AJAX 1.0 UpdatePanel control that uses the _doPostBack() function does not work when the URL of the hosting SharePoint Web site contains international characters
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Problembeschreibung

Stellen Sie sich folgendes Szenario vor:
  • Sie verwenden das Microsoft AJAX 1.0 Control Toolkit für Microsoft ASP.NET oder die AJAX 1.0-Erweiterungen für ASP.NET, um ein benutzerdefiniertes Webpart für eine Microsoft Office SharePoint Server 2007- oder eine Microsoft Windows SharePoint Services 3.0-Website zu erstellen.
  • Das benutzerdefinierte Webpart enthält ein UpdatePanel-Steuerelement mit einer _doPostBack()-Funktion (z. B. ein "LinkButton"-Steuerelement).
  • Sie fügen das benutzerdefinierte Webpart zu einer SharePoint Services 2007-Website oder einer Windows SharePoint Services 3.0-Website hinzu. Der URL der Windows SharePoint Services 3.0-Website bzw. der SharePoint Server 2007-Website enthält internationale Zeichen oder sprachspezifische Zeichen.
  • Sie rufen die Windows SharePoint Services 3.0-Website bzw. die SharePoint Server 2007-Website auf. Anschließend versuchen Sie, ausgewählte Inhalte im Webpart zu aktualisieren.
In diesem Szenario wird anstelle einer asynchronen ASP.NET-AJAX-Postback-Anforderung eine normale Postback-Anforderung ausgegeben.

Ursache

Dieses Problem tritt auf, weil Windows SharePoint Services und ASP.NET AJAX einige Typen von Formularaktionen zwischenspeichern. Daher kommt es eventuell zu Konflikten.

Abhilfe

Verwenden Sie ähnlichen Code wie im folgenden Beispiel, um dieses Problem zu umgehen und in SharePoint Server 2007 oder in Windows SharePoint Services 3.0 ein UpdatePanel-Steuerelement zu einem Webpart hinzuzufügen.
 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;
    }
}
Der folgende Code ist ein Beispiel für ein Webpart mit dem oben genannten UpdatePanel-Steuerelement. Außerdem wird die Methode EnsureUpdatePanelFixups zum Registrieren des Script Manager-Steuerelements im Webpart verwendet.
 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);
            }
        }
    }

Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Office SharePoint Server 2007
  • Microsoft Windows SharePoint Services 3.0
Keywords: 
kbexpertiseinter kbtshoot kbprb KB941955
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.