新しいASP.NET Webアプリケーションを作成しましたが、デバッグ後にサーバーエラーが発生しました
ID 'WaitingPopup1'のコントロールには、ページにScriptManagerが必要です。 ScriptManagerは、それを必要とするコントロールの前に表示する必要があります。
私はASP.NETを初めて使用するので、web.configのどこにScriptManagerをインストールする必要がありますか?
ScriptManager
は、作成したページに追加する必要があるコントロールです。
これを見てください サンプルAJAXアプリケーション 。
<body>
<form runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
...
</form>
</body>
ページでMicrosoft ajaxを使用している場合、マスターページまたはそれを必要とするページに スクリプトマネージャーコントロール を追加する必要があります。 ASP.NET Ajaxスクリプトライブラリとスクリプトファイル、部分ページレンダリング、およびWebサービスとアプリケーションサービスのクライアントプロキシクラスの生成を管理します。
<asp:ScriptManager ID="ScriptManger1" runat="Server">
</asp:ScriptManager>
<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>
ページの<Form>
タグのすぐ下にスクリプトマネージャータグを追加できます。 Script Managerタグを配置する方法は次のとおりです。
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
マスターページを使用している場合は、AJAXコントロールを含むすべてのページで何度も何度も記述する必要がないように、マスターページでスクリプトマネージャーを使用することをお勧めします。
ScriptManager
タグ内にform
を次のように配置するだけです。
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
Master Page
がある場合は、これをマスターページ自体に配置します。
スクリプトマネージャーがそのような問題を引き起こす場合が多くあります。試してみてくださいまず、適切なプレースホルダーまたはAjaxコントロールが使用されているコンテンツの前に表示されるプレースホルダーにスクリプトマネージャーを追加します。
AJAX Control Panelを更新するだけでなく、Controlを使用しているときにScriptManagerを追加する必要があります。<asp:ScriptManager ID="ScriptManger1" runat="Server" />
最新のAjax Control Toolkitを使用している場合(バージョン4.0または4.5についてはわかりません)、デフォルトのAjax ExtensionsのScriptManagerではなく、その特定のToolkitScriptManagerを使用する必要があります。
ページで使用できるScriptManagerまたはToolKitScriptManagerは1つだけです。マスターページに追加した場合は、Webページに再度追加する必要はありません。
ここで言及した問題は、ContentPlaceHolderが原因である可能性があります。マスターページにあるコンテンツプレースホルダーの数を確認してください。マスターページに2つのコンテンツプレースホルダー「Head」と「ContentPlaceHolder1」があり、ContentPlaceHolder1がコンテンツページである場合の例を見てみましょう。次のコードを確認してください。
<!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>
Webページでデフォルトでマスターページを選択すると、ほとんどの人がWebフォームの設計中に間違いを犯します。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>
ガイド構造であるPlaceHolderを削除する必要はありませんが、ScriptManagerを(マスターページで)追加した同じPlaceHolderにWebフォームコンテンツを追加するか、適切なプレースホルダーまたはコンテンツの前に表示されるプレースホルダーにスクリプトマネージャーを追加する必要がありますAjax Controlが使用されます。
ScriptManager
は、以下を使用してページに登録するWebコントロールです
<asp:ScriptManager ID="ScriptManger1" runat="Server" />
formタグ内
ASPXページにASPコントロールが必要です。通常、タグのすぐ下、またはマスターの本文の最初のコンテンツ領域内に配置します(マスターページを使用している場合)
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="scriptManager" runat="server"></asp:ScriptManager>
<div>
[Content]
</div>
</form>
</body>
runat="server"
付きのhead
タグ付きrunat="server"
を含むform
タグ内ContentPanels
の前-UpdatePanels
のある典型的なコントロール:<%= PageTitle%>
</form>
</body>
ASP.NETページのフォームタグ内。
スクリプトマネージャーは、使用する前にページに配置する必要があります。これは、ページ自体に直接表示されます。または、使用している場合は、マスターページに表示されます。
マークアップは次のようになります。
<asp:ScriptManager ID="ScriptManager1" runat="server" LoadScriptsBeforeUI="true"
EnablePartialRendering="true" />