System.InvalidOperationException: 只能将 ScriptManager 的一个实例添加到页面
System.InvalidOperationException: Only one instance of a ScriptManager can be added to the page
在下面的代码文件中,我在第 3 行编写了 ajax 模态弹出代码。 47 我收到错误消息说只能将一个 scriptManager 实例添加到我正在学习的页面 asp.net 请帮我解决这个错误。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Bags.aspx.cs" Inherits="Bags" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style>
.modalBackground {
background-color: black;
filter: alpha(opacity = 90) !important;
opacity: 0.6 !important;
z-index: 20;
}
.modalpopup {
padding: 20px 0px 24px 10px;
position: relative;
width: 450px;
height: 66px;
background-color: white;
border: 1px solid black;
}
</style>
</head>
<body>
<div>
<form id="RegistrationsForm" runat="server">
<asp:GridView CssClass="table table-bordered table-striped" ID="GridViewEntry" runat="server" AutoGenerateColumns="False" DataKeyNames="LID" OnSelectedIndexChanged="GridViewEntry_SelectedIndexChanged">
<Columns>
<asp:BoundField HeaderText="FULL NAME" DataField="full_name"></asp:BoundField>
<asp:BoundField HeaderText="Bag ID" DataField="LID"></asp:BoundField>
<asp:BoundField HeaderText="Tag ID" DataField="RFID"></asp:BoundField>
<asp:BoundField HeaderText="State" DataField="state"></asp:BoundField>
<asp:BoundField HeaderText="At" DataField="At"></asp:BoundField>
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<asp:Button ID="LostButton" runat="server"
CommandName="Lost"
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
Text="Lost" CssClass="btn btn-sm btn-success" />
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></cc1:ToolkitScriptManager>
<asp:Panel ID="Panel1" runat="server" CssClass="modalpopup">
Desription :
<br></br>
<asp:TextBox ID="Desription" runat="server" placeholder="Optional"></asp:TextBox>
<br></br>
<asp:Button ID="OK" runat="server" Text="OK" />
<asp:Button ID="Cancel" runat="server" Text="Cancel" />
</asp:Panel>
<cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" CancelControlID="Cancel" OkControlID="OK" PopupControlID="Panel1" TargetControlID="LostButton" BackgroundCssClass="modalBackground"></cc1:ModalPopupExtender>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
<div class='row'>
<div class='col-sm-12'>
<div class='alert alert-warning'>
<asp:Label ID="LblError" runat="server">No Information Found! Please Check Again Later!</asp:Label>
</div>
</div>
</div>
</EmptyDataTemplate>
</asp:GridView>
</form>
</div>
Bags.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
public partial class Bags : System.Web.UI.Page
{
private SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["BAGTRACKConnectionString"].ConnectionString);
private int fid = 1;
protected void Page_Load(object sender, EventArgs e)
{
if ((HttpContext.Current.Session["username"] == null))
Response.Redirect("~/Login.aspx");
if (!IsPostBack)
{
if (Request.QueryString["ref_id"] != null)
{
fid = Convert.ToInt32(Request.QueryString["ref_id"]);
GVBind();
}
else
{
Response.Redirect("Dashboard.aspx");
}
}
}
protected void GVBind()
{
DataSet ds = new DataSet();
con.Open();
SqlCommand cmd = new SqlCommand("select CONCAT(P.fname,' ',P.lname) AS full_name , L.LID ,L.RFID ,S.state ,B.At_time as At from Flight F , Ticket T , Passenger P ,Luggage L , BagTrip B ,Status S where T.FID = F.FID and T.username = P.username and L.TID = T.TID and B.ReaderID = S.ReaderID and B.LID = L.LID and F.FID = @FID ", con);
cmd.Parameters.AddWithValue("@FID", fid);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
con.Close();
GridViewEntry.DataSource = ds;
GridViewEntry.DataBind();
}
protected void GridViewEntry_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow row = GridViewEntry.SelectedRow;
con.Open();
SqlCommand cmd = new SqlCommand("insert into LostRepository values(@LID,0,@desription,@time)", con);
cmd.Parameters.AddWithValue("@LID", row.Cells[1]);
cmd.Parameters.AddWithValue("@desription", (GridViewEntry.SelectedRow.FindControl("Desription") as TextBox).Text);
cmd.Parameters.AddWithValue("@FID", fid);
cmd.Parameters.AddWithValue("@time", DateTime.Now.TimeOfDay);
cmd.ExecuteNonQuery();
con.Close();
}
}
发生错误是因为您的页面中有多个 ToolkitScriptManager
。您已将 ToolkitScriptManager
放置在 GridView
控件中,这就是它多次呈现的原因。请从 GridView
中删除 ToolkitScriptManager
并将其放在 form
标签下方。
检查此代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Bags.aspx.cs" Inherits="Bags" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style>
.modalBackground {
background-color: black;
filter: alpha(opacity = 90) !important;
opacity: 0.6 !important;
z-index: 20;
}
.modalpopup {
padding: 20px 0px 24px 10px;
position: relative;
width: 450px;
height: 66px;
background-color: white;
border: 1px solid black;
}
</style>
</head>
<body>
<div>
<form id="RegistrationsForm" runat="server">
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></cc1:ToolkitScriptManager>
<asp:GridView CssClass="table table-bordered table-striped" ID="GridViewEntry" runat="server" AutoGenerateColumns="False" DataKeyNames="LID" OnSelectedIndexChanged="GridViewEntry_SelectedIndexChanged">
<Columns>
<asp:BoundField HeaderText="FULL NAME" DataField="full_name"></asp:BoundField>
<asp:BoundField HeaderText="Bag ID" DataField="LID"></asp:BoundField>
<asp:BoundField HeaderText="Tag ID" DataField="RFID"></asp:BoundField>
<asp:BoundField HeaderText="State" DataField="state"></asp:BoundField>
<asp:BoundField HeaderText="At" DataField="At"></asp:BoundField>
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<asp:Button ID="LostButton" runat="server"
CommandName="Lost"
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
Text="Lost" CssClass="btn btn-sm btn-success" />
<asp:Panel ID="Panel1" runat="server" CssClass="modalpopup">
Desription :
<br></br>
<asp:TextBox ID="Desription" runat="server" placeholder="Optional"></asp:TextBox>
<br></br>
<asp:Button ID="OK" runat="server" Text="OK" />
<asp:Button ID="Cancel" runat="server" Text="Cancel" />
</asp:Panel>
<cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" CancelControlID="Cancel" OkControlID="OK" PopupControlID="Panel1" TargetControlID="LostButton" BackgroundCssClass="modalBackground"></cc1:ModalPopupExtender>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
<div class='row'>
<div class='col-sm-12'>
<div class='alert alert-warning'>
<asp:Label ID="LblError" runat="server">No Information Found! Please Check Again Later!</asp:Label>
</div>
</div>
</div>
</EmptyDataTemplate>
</asp:GridView>
</form>
</div>
在下面的代码文件中,我在第 3 行编写了 ajax 模态弹出代码。 47 我收到错误消息说只能将一个 scriptManager 实例添加到我正在学习的页面 asp.net 请帮我解决这个错误。
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Bags.aspx.cs" Inherits="Bags" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style>
.modalBackground {
background-color: black;
filter: alpha(opacity = 90) !important;
opacity: 0.6 !important;
z-index: 20;
}
.modalpopup {
padding: 20px 0px 24px 10px;
position: relative;
width: 450px;
height: 66px;
background-color: white;
border: 1px solid black;
}
</style>
</head>
<body>
<div>
<form id="RegistrationsForm" runat="server">
<asp:GridView CssClass="table table-bordered table-striped" ID="GridViewEntry" runat="server" AutoGenerateColumns="False" DataKeyNames="LID" OnSelectedIndexChanged="GridViewEntry_SelectedIndexChanged">
<Columns>
<asp:BoundField HeaderText="FULL NAME" DataField="full_name"></asp:BoundField>
<asp:BoundField HeaderText="Bag ID" DataField="LID"></asp:BoundField>
<asp:BoundField HeaderText="Tag ID" DataField="RFID"></asp:BoundField>
<asp:BoundField HeaderText="State" DataField="state"></asp:BoundField>
<asp:BoundField HeaderText="At" DataField="At"></asp:BoundField>
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<asp:Button ID="LostButton" runat="server"
CommandName="Lost"
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
Text="Lost" CssClass="btn btn-sm btn-success" />
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></cc1:ToolkitScriptManager>
<asp:Panel ID="Panel1" runat="server" CssClass="modalpopup">
Desription :
<br></br>
<asp:TextBox ID="Desription" runat="server" placeholder="Optional"></asp:TextBox>
<br></br>
<asp:Button ID="OK" runat="server" Text="OK" />
<asp:Button ID="Cancel" runat="server" Text="Cancel" />
</asp:Panel>
<cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" CancelControlID="Cancel" OkControlID="OK" PopupControlID="Panel1" TargetControlID="LostButton" BackgroundCssClass="modalBackground"></cc1:ModalPopupExtender>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
<div class='row'>
<div class='col-sm-12'>
<div class='alert alert-warning'>
<asp:Label ID="LblError" runat="server">No Information Found! Please Check Again Later!</asp:Label>
</div>
</div>
</div>
</EmptyDataTemplate>
</asp:GridView>
</form>
</div>
Bags.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;
public partial class Bags : System.Web.UI.Page
{
private SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["BAGTRACKConnectionString"].ConnectionString);
private int fid = 1;
protected void Page_Load(object sender, EventArgs e)
{
if ((HttpContext.Current.Session["username"] == null))
Response.Redirect("~/Login.aspx");
if (!IsPostBack)
{
if (Request.QueryString["ref_id"] != null)
{
fid = Convert.ToInt32(Request.QueryString["ref_id"]);
GVBind();
}
else
{
Response.Redirect("Dashboard.aspx");
}
}
}
protected void GVBind()
{
DataSet ds = new DataSet();
con.Open();
SqlCommand cmd = new SqlCommand("select CONCAT(P.fname,' ',P.lname) AS full_name , L.LID ,L.RFID ,S.state ,B.At_time as At from Flight F , Ticket T , Passenger P ,Luggage L , BagTrip B ,Status S where T.FID = F.FID and T.username = P.username and L.TID = T.TID and B.ReaderID = S.ReaderID and B.LID = L.LID and F.FID = @FID ", con);
cmd.Parameters.AddWithValue("@FID", fid);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(ds);
con.Close();
GridViewEntry.DataSource = ds;
GridViewEntry.DataBind();
}
protected void GridViewEntry_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow row = GridViewEntry.SelectedRow;
con.Open();
SqlCommand cmd = new SqlCommand("insert into LostRepository values(@LID,0,@desription,@time)", con);
cmd.Parameters.AddWithValue("@LID", row.Cells[1]);
cmd.Parameters.AddWithValue("@desription", (GridViewEntry.SelectedRow.FindControl("Desription") as TextBox).Text);
cmd.Parameters.AddWithValue("@FID", fid);
cmd.Parameters.AddWithValue("@time", DateTime.Now.TimeOfDay);
cmd.ExecuteNonQuery();
con.Close();
}
}
发生错误是因为您的页面中有多个 ToolkitScriptManager
。您已将 ToolkitScriptManager
放置在 GridView
控件中,这就是它多次呈现的原因。请从 GridView
中删除 ToolkitScriptManager
并将其放在 form
标签下方。
检查此代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Bags.aspx.cs" Inherits="Bags" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style>
.modalBackground {
background-color: black;
filter: alpha(opacity = 90) !important;
opacity: 0.6 !important;
z-index: 20;
}
.modalpopup {
padding: 20px 0px 24px 10px;
position: relative;
width: 450px;
height: 66px;
background-color: white;
border: 1px solid black;
}
</style>
</head>
<body>
<div>
<form id="RegistrationsForm" runat="server">
<cc1:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></cc1:ToolkitScriptManager>
<asp:GridView CssClass="table table-bordered table-striped" ID="GridViewEntry" runat="server" AutoGenerateColumns="False" DataKeyNames="LID" OnSelectedIndexChanged="GridViewEntry_SelectedIndexChanged">
<Columns>
<asp:BoundField HeaderText="FULL NAME" DataField="full_name"></asp:BoundField>
<asp:BoundField HeaderText="Bag ID" DataField="LID"></asp:BoundField>
<asp:BoundField HeaderText="Tag ID" DataField="RFID"></asp:BoundField>
<asp:BoundField HeaderText="State" DataField="state"></asp:BoundField>
<asp:BoundField HeaderText="At" DataField="At"></asp:BoundField>
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<asp:Button ID="LostButton" runat="server"
CommandName="Lost"
CommandArgument="<%# ((GridViewRow) Container).RowIndex %>"
Text="Lost" CssClass="btn btn-sm btn-success" />
<asp:Panel ID="Panel1" runat="server" CssClass="modalpopup">
Desription :
<br></br>
<asp:TextBox ID="Desription" runat="server" placeholder="Optional"></asp:TextBox>
<br></br>
<asp:Button ID="OK" runat="server" Text="OK" />
<asp:Button ID="Cancel" runat="server" Text="Cancel" />
</asp:Panel>
<cc1:ModalPopupExtender ID="ModalPopupExtender1" runat="server" CancelControlID="Cancel" OkControlID="OK" PopupControlID="Panel1" TargetControlID="LostButton" BackgroundCssClass="modalBackground"></cc1:ModalPopupExtender>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
<div class='row'>
<div class='col-sm-12'>
<div class='alert alert-warning'>
<asp:Label ID="LblError" runat="server">No Information Found! Please Check Again Later!</asp:Label>
</div>
</div>
</div>
</EmptyDataTemplate>
</asp:GridView>
</form>
</div>