Utilizzo di Ajax ScriptManager e ToolkitScriptManager nella master page e pagine di contenuti, rispettivamente senza errori

Ho uno Script Ajax manager nella mia pagina Master dal momento che le mie pagine uso di ajax. Ma in una delle mie pagine di contenuto, è necessario utilizzare AutoCompleteExtender in AjaxControlToolkit che richiede l’uso di ToolScriptManager disponibili nel toolkit. Ma questo porta ad un errore dicendo una sola istanza di un ScriptManager può essere aggiunto alla pagina. Ho cercato su internet per trovare una soluzione. Molti programmatori suggerisce l’uso di un ScriptManagerProxy per risolvere questo problema. Un’altra alternativa è l’utilizzo di ToolscriptManager nella pagina master invece di ScriptManager. Qualcuno può indicare come risolvere questo problema utilizzando ScriptManagerProxy in quanto penso che sia un modo migliore di risolvere il problema?

Qui è il codice della mia pagina master:

<form runat="server" id="bodyForm">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:ContentPlaceHolder ID="ContentPlaceHolderBodyMain" runat="server">
</asp:ContentPlaceHolder>
</form>

E qui è il codice della mia pagina di contenuto:

<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
<asp:TextBox ID="TextBoxStudentID" runat="server" autocomplete="off"></asp:TextBox>
    <asp:AutoCompleteExtender ID="AutoCompleteExtenderStudentID" runat="server" 
    EnableCaching="true" BehaviorID="AutoCompleteEx" MinimumPrefixLength="2" 
       TargetControlID="TextBoxStudentID" ServicePath="~/CampusMateWebService.asmx" ServiceMethod="GetCompletionListForStudentID" 
       CompletionInterval="50" CompletionSetCount="30" 
       CompletionListCssClass="autocomplete_completionListElement" CompletionListItemCssClass="autocomplete_listItem" 
       CompletionListHighlightedItemCssClass="autocomplete_highlightedListItem" 
       DelimiterCharacters=";, :" ShowOnlyCurrentWordInCompletionListItem="true">
    <Animations>
      <OnShow>
      <Sequence>
      <%-- Make the completion list transparent and then show it --%>
      <OpacityAction Opacity="0" />
      <HideAction Visible="true" />

      <%--Cache the original size of the completion list the first time
        the animation is played and then set it to zero --%>
      <ScriptAction Script="//Cache the size and setup the initial size
                                    var behavior = $find('AutoCompleteEx');
                                    if (!behavior._height) {
                                        var target = behavior.get_completionList();
                                        behavior._height = target.offsetHeight - 2;
                                        target.style.height = '0px';
                                    }" />
      <%-- Expand from 0px to the appropriate size while fading in --%>
      <Parallel Duration=".2">
      <FadeIn />
      <Length PropertyKey="height" StartValue="0" 
        EndValueScript="$find('AutoCompleteEx')._height" />
      </Parallel>
      </Sequence>
      </OnShow>
      <OnHide>
      <%-- Collapse down to 0px and fade out --%>
      <Parallel Duration=".2">
      <FadeOut />
      <Length PropertyKey="height" StartValueScript=
        "$find('AutoCompleteEx')._height" EndValue="0" />
      </Parallel>
      </OnHide>
      </Animations>
    </asp:AutoCompleteExtender>



3 Replies
  1. 3

    Mi sono imbattuto in un problema simile durante l’aggiornamento da una versione precedente di AjaxControlToolkit (e aggiornando .NET 2.0 a 3.5).

    Un’altra alternativa è l’utilizzo di ToolscriptManager nella pagina master invece di ScriptManager. Qualcuno può indicare come risolvere questo problema utilizzando ScriptManagerProxy in quanto penso che sia un modo migliore di risolvere il problema?

    Non vedo perché sarebbe il modo migliore. È quindi necessario inserire un ScriptManager su ogni singolo bambino pagina. Cosa c’è di sbagliato con la sola sostituzione ScriptManager con ToolkitScriptManager sulla pagina Master e da fare con esso?

    Questo è stato trovato in http://www.asp.net/ajaxlibrary/act_faq.ashx:

    1. Quale è la differenza tra il controllo ScriptManager e il ToolkitScriptManager di controllo?
      Si consiglia di utilizzare il ToolkitScriptManager di controllo quando si utilizza Ajax Control Toolkit. Il ToolkitScriptManager utilizza una versione successiva di ASP.NET Ajax di controllo ScriptManager. Inoltre, il ToolkitScriptManager esegue script automatico che combina sul server. Si sono tenuti a utilizzare il ToolkitScriptManager quando si utilizza Ajax Control Toolkit con ASP.NET 3.5
  2. 2

    ScriptManagerProxy consente al contenuto di pagina per passare riferimenti a ScriptManager inserito nella pagina master.

    video tutorial

    ScriptManagerProxy di controllo consente a un utente di aggiungere script e servizi che sono specifici per i componenti nidificati. Se una pagina contiene già il controllo ScriptManager. Solo un’istanza del controllo ScriptManager può essere aggiunto a una pagina. La pagina può includere il controllo, direttamente o indirettamente, all’interno di un componente annidato come un utente o di controllo nidificato pagina master. Il ScriptManagerProxy di controllo è utilizzato quando il controllo ScriptManager è già nella pagina nidificate, o un genitore di un componente richiede ulteriori funzioni di controllo ScriptManager.

    Come utilizzare AJAX pacchetto ScriptManagerProxy di controllo in ASP.NET

    • sì scriptmanager proxy di controllo permette all’utente di aggiungere script per controlli specifici per il loro specifico lavoro. Su una pagina, abbiamo una scriptmanager e più scriptmanager proxy.
    • Rana,@Adittya: so che dovrei usare ScriptManagerProxy. Il problema è che non so per ignorare ScriptManager nella MasterPage con ToolkitScriptManager nel Contenuto della pagina. C’è qualche modo per farlo?

Lascia un commento