Wie um zu überprüfen, ob client-script bereits registriert wurde, während eine partielle postback

Unten ist der code, den ich habe derzeit umgesetzt.

if (!Page.ClientScript.IsStartupScriptRegistered(Page.GetType(), scriptKey))
{
  ScriptManager scriptManager = ScriptManager.GetCurrent(page);
  if (scriptManager != null && scriptManager.IsInAsyncPostBack)
  {
    //if a MS AJAX request, use the Scriptmanager class
    ScriptManager.RegisterStartupScript(Page, Page.GetType(), scriptKey, script, true);
  }
  else
  {
    //if a standard postback, use the standard ClientScript method
    Page.ClientScript.RegisterStartupScript(Page.GetType(), scriptKey, script, true);
  }
}

Mache ich wie vorgeschlagen in diese Antwort, damit kann ich mich anmelden-startup-Skript auf beiden Zeiten also, wenn es partielle Postbacks und einem vollständigen postback.

Das problem ist Page.ClientScript.IsStartupScriptRegistered(Page.GetType(), scriptKey) immer (auch, wenn das script vorher registriert) gibt false zurück, wenn es partielle postback. Und ich konnte Sie nicht finden, ScriptManager.IsStartupScriptRegistered (statische) Methode. Als Ergebnis dieser, ein zusätzliches Skript wird abgegeben, auf der alle partiellen/asynchrone postbacks.

Bitte beachten Sie, dass ich mit script manager von AjaxControlToolkit, version 4.1, d.h. ToolkitScriptManager in meiner masterpage. Aber ich weiß nicht, was es hat etwas mit diesem zu tun.

UPDATE

  <asp:UpdatePanel ID="ContactDetailsUpdatePanel" UpdateMode="Conditional" runat="server">
    <Triggers>
      <asp:AsyncPostBackTrigger ControlID="UpdateContactDetailsButton" EventName="Click" />
    </Triggers>
    <ContentTemplate>
      <div id="ContactDetailsContent" class="contact_details_content">
        <div class="customer_contactdetails_left_pane">
          <div class="customer_name_field">
            <asp:Label ID="CustomerNameLabel" runat="server" Text="Customer" />
            <asp:TextBox ID="CustomerNameValue" runat="server" />
          </div>
          <div class="customer_address_field">
            <asp:Label ID="CustomerAddressLabel" runat="server" Text="Address" />
            <asp:TextBox ID="CustomerAddressValue" runat="server" />
            <asp:TextBox ID="CustomerAddressValue1" runat="server" />
            <asp:TextBox ID="CustomerAddressValue2" runat="server" />
            <asp:TextBox ID="CustomerAddressValue3" runat="server" />
          </div>
          <div class="customer_postcode_field">
            <asp:Label ID="CustomerPostcodeLabel" runat="server" Text="Postcode" />
            <asp:TextBox ID="CustomerPostcodeValue" runat="server" />
          </div>
        </div>
        <div class="customer_contactdetails_right_pane">
          <div>
            <asp:Label ID="CustomerContactLabel" runat="server" Text="Contact" />
            <asp:TextBox ID="CustomerContactValue" runat="server" />
          </div>
          <div>
            <asp:Label ID="CustomerTelephoneLabel" runat="server" Text="Telephone" />
            <asp:TextBox ID="CustomerTelephoneValue" runat="server" />
          </div>
          <div>
            <asp:Label ID="CustomerMobileLabel" runat="server" Text="Mobile" />
            <asp:TextBox ID="CustomerMobileValue" runat="server" />
          </div>
          <div>
            <asp:Label ID="CustomerFaxLabel" runat="server" Text="Fax" />
            <asp:TextBox ID="CustomerFaxValue" runat="server" />
          </div>
          <div>
            <asp:Label ID="CustomerEmailLabel" runat="server" Text="Email" />
            <asp:TextBox ID="CustomerEmailValue" runat="server" />
          </div>
          <div>
            <asp:Label ID="CustomerWebLabel" runat="server" Text="Web" />
            <asp:TextBox ID="CustomerWebValue" runat="server" />
          </div>
        </div>
      </div>
      <div class="update_button_field">
        <asp:Button ID="UpdateContactDetailsButton" runat="server" Text="Update" 
          onclick="UpdateContactDetailsButton_Click" />
      </div>          
    </ContentTemplate>    
  </asp:UpdatePanel>

Vielen Dank im Voraus.

HINWEIS: in der Lage sein zu verstehen, den Fortschritt auf diesem problem, siehe die Kommentare auf diese beantworten, bevor Sie Antworten.

UPDATE
Ich habe implementiert eine temporäre Lösung für dieses problem, indem Sie ein Häkchen in der javascript, dass, wenn das Skript bereits ausgeführt, dann führen nicht zweimal. Javascript ist immer noch aufgespießt mehrmals auf jede partielle postback. Konnte es nicht verhindern.

Als der Blick auf diese post erhöht sich, ich kann sehen, dass es andere Menschen, die vielleicht wollen Sie auch Antwort auf dieses problem.

InformationsquelleAutor der Frage IsmailS | 2010-05-13

Schreibe einen Kommentar