web-dev-qa-db-fra.com

ScriptManager doit apparaître avant tous les contrôles qui en ont besoin

J'ai créé une nouvelle application Web ASP.NET et, après le débogage, j'ai une erreur de serveur.

Le contrôle avec l'ID 'WaitingPopup1' nécessite un ScriptManager sur la page. ScriptManager doit apparaître avant tous les contrôles qui en ont besoin. 

Je suis nouveau chez ASP.NET alors où dois-je installer ScriptManager dans le fichier web.config?

23
H79

La ScriptManager est un contrôle qui doit être ajouté à la page que vous avez créée.

Jetez un coup d'œil à cette Exemple AJAX Application .

<body>
    <form runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        ...
    </form>
</body>
58
AMember

Si vous utilisez Microsoft ajax sur votre page, vous avez besoin de le contrôle du gestionnaire de scripts ajouté à votre page maître ou à la page qui en a besoin. Il gère les bibliothèques de script et les fichiers de script Ajax ASP.NET, le rendu de page partielle et la génération de classes de proxy client pour les services Web et d'application.

<asp:ScriptManager ID="ScriptManger1" runat="Server">
</asp:ScriptManager>

Le utilisation complète

<asp:ScriptManager
    AllowCustomErrorsRedirect="True|False"
    AsyncPostBackErrorMessage="string"
    AsyncPostBackTimeout="integer"
    AuthenticationService-Path="uri"
    EnablePageMethods="True|False"
    EnablePartialRendering="True|False"
    EnableScriptGlobalization="True|False"
    EnableScriptLocalization="True|False"
    EnableTheming="True|False"
    EnableViewState="True|False"
    ID="string"
    LoadScriptsBeforeUI="True|False"
    OnAsyncPostBackError="AsyncPostBackError event handler"
    OnDataBinding="DataBinding event handler"
    OnDisposed="Disposed event handler"
    OnInit="Init event handler"
    OnLoad="Load event handler"
    OnPreRender="PreRender event handler"
    OnResolveScriptReference="ResolveScriptReference event handler"
    OnUnload="Unload event handler"
    ProfileService-LoadProperties="string"
    ProfileService-Path="uri"
    RoleService-LoadRoles="True|False"
    RoleService-Path="uri"
    runat="server"
    ScriptMode="Auto|Inherit|Debug|Release"
    ScriptPath="string"
    SkinID="string"
    SupportsPartialRendering="True|False"
    Visible="True|False">
        <AuthenticationService
            Path="uri" />
        <ProfileService
            LoadProperties="string"
            Path="uri" />
        <RoleService
            LoadRoles="True|False"
            Path="uri" />
        <Scripts>
            <asp:ScriptReference
                Assembly="string"
                IgnoreScriptPath="True|False"
                Name="string"
                NotifyScriptLoaded="True|False"
                Path="string"
                ResourceUICultures="string"
                ScriptMode="Auto|Debug|Inherit|Release" />
        </Scripts>
        <Services>
            <asp:ServiceReference
                InlineScript="True|False"
                Path="string" />
        </Services>
</asp:ScriptManager>
8
codingbiz

Vous pouvez ajouter vos balises Script Manager juste en dessous de la balise <Form> de votre page. Voici comment vous pouvez placer votre tag Script Manager.

    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>

Si vous utilisez des pages maîtres, il est recommandé d'utiliser votre gestionnaire de scripts dans votre page maître afin de ne pas avoir à l'écrire encore et encore sur chaque page contenant des commandes AJAX.

5
raheel khokhar

Il suffit de mettre ScriptManager dans la balise form comme ceci:

<form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager> 

S'il a Master Page, placez-le dans la page maître elle-même.

4
Vishal Suthar

Il y a beaucoup de cas où Script Manager peut donner un problème comme ça. vous essayez ceci d’abord. Ajoutez Script Manager dans un espace réservé approprié ou dans tout détenteur d’emplacement qui apparaît avant le contenu dans lequel Ajax Control est utilisé.

  1. Nous devons ajouter ScriptManager lorsque vous utilisez n’importe quel contrôle AJAX et non seulement mettre à jour le Panel .<asp:ScriptManager ID="ScriptManger1" runat="Server" />

  2. Si vous utilisez la dernière boîte à outils de contrôle Ajax (je ne suis pas sûr de la version 4.0 ou 4.5), vous devez utiliser ce ToolkitScriptManager particulier et non ScriptManager à partir des extensions Ajax par défaut.

  3. Vous ne pouvez utiliser qu'un seul ScriptManager ou ToolKitScriptManager sur la page. Si vous l'avez ajouté à la page maître, vous n'avez pas besoin de l'ajouter à nouveau sur la page Web. 

  4. Le problème mentionné ici peut être dû à ContentPlaceHolder. Veuillez vérifier le nombre d’espaces réservés pour le contenu que vous avez sur votre page maître. Prenons un exemple si vous avez 2 espaces réservés de contenu "Head" et "ContentPlaceHolder1" sur la page maître et que ContentPlaceHolder1 est votre page de contenu. Vérifiez s'il vous plaît code ci-dessous J'ai ajouté ici mon ScriptManager sur Second Placeholder juste en dessous du panneau de mise à jour. 

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder id="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ContentPlaceHolder id="MainContent" runat="server">
        <asp:ScriptManager ID="ScriptManger1" runat="Server" />
          <asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
    </ContentTemplate>
</asp:UpdatePanel>
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html> 

La plupart d'entre nous commettons des erreurs lors de la conception d'un formulaire Web lorsque nous choisissons masterpage par défaut sur une page Web. Il existe un nombre égal d'espaces réservés par rapport à MasterPage.

<%@ Page Title="" Language="C#" MasterPageFile="~/Master Pages/Home.master" AutoEventWireup="true" CodeFile="frmCompanyLogin.aspx.cs" Inherits="Authentication_frmCompanyLogin" %>

<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
</asp:Content>

Nous n’avons besoin de supprimer aucun PlaceHolder, c’est sa structure directrice, mais vous devez ajouter le contenu du formulaire Web dans le même PlaceHolder où vous avez ajouté votre ScriptManager (sur la page maître) ou ajouter Script Manager dans un espace réservé approprié ou dans tout espace réservé précédant le contenu. dans lequel Ajax Control est utilisé.

2
Vijay Kumbhoje

Le ScriptManager est un contrôle Web que vous enregistrez dans la page à l'aide de

<asp:ScriptManager ID="ScriptManger1" runat="Server" />

à l'intérieur de la balise de formulaire

1
PHeiberg

Il veut simplement le contrôle ASP sur votre page ASPX. D'habitude, je place le mien juste sous la balise ou à l'intérieur de la première zone de contenu dans le corps du maître (si vous utilisez une page maître)

<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="scriptManager" runat="server"></asp:ScriptManager>
        <div>
            [Content]
        </div>
    </form>
</body>
1
Ray K
  • avec une balise head avec runat="server"
  • dans une balise form avec runat="server"
  • avant la ContentPanels contenant les contrôles qui en ont besoin - contrôles typiques avec UpdatePanels:

<% = PageTitle%>

</form>
 </body>
0

Sur la page ASP.NET, à l'intérieur des balises de formulaire.

0
Ryan Penfold

Le gestionnaire de script doit être placé sur la page avant son utilisation. Ce serait directement sur la page elle-même, ou alternativement, si vous les utilisez, sur la page maître.

Le balisage serait;

 <asp:ScriptManager ID="ScriptManager1" runat="server" LoadScriptsBeforeUI="true"
            EnablePartialRendering="true" />
0
ChrisBint