当我尝试添加用户控件时,我收到了此错误
Only one instance of a ScriptManager can be added to the page
代码:
的.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="VisaUserControl.ascx.cs" Inherits="Portal.VisaUserControl" %>
<%@ Register Assembly="BasicFrame.WebControls.BasicDatePicker" Namespace="BasicFrame.WebControls" TagPrefix="dp" %>
<asp:ScriptManager ID="scriptmanager1" runat="server"></asp:ScriptManager>
<div id="divreg" runat="server">
<table id="tbl" runat="server">
<tr>
<td>
<asp:Label ID="lbl2" runat="server"></asp:Label>
</td>
</tr>
<tr>
<td> Visa Number:</td>
<td><asp:TextBox ID="txtUser" Width="160px" runat="server"/></td>
<td> Country Name:</td>
<td><asp:DropDownList ID="dropCountry" Width="165px" runat="server"></asp:DropDownList></td>
</tr>
<tr>
<td> Type of Visa:</td>
<td><asp:DropDownList ID="dropVisa" Width="165px" runat="server" OnSelectedIndexChanged="dropVisa_SelectedIndexChanged"></asp:DropDownList></td>
<td> Type of Entry:</td>
<td><asp:DropDownList ID="dropEntry" Width="165px" runat="server"></asp:DropDownList></td>
</tr>
<tr>
<td> Expiry Date</td>
<td><asp:TextBox ID="txtDate" runat="server"></asp:TextBox>
<ajaxToolkit:CalendarExtender ID="CalendarExtender1" runat="server"
TargetControlID="txtDate" PopupButtonID="Imgbtnfromdate" Format="dd/MM/yyyy">
</ajaxToolkit:CalendarExtender>
</td>
<td>
<asp:Button ID="btnRemove" Text="Remove" runat="server" OnClick="btnRemove_Click" />
</td>
</tr>
</table>
</div>
.aspx.cs
protected override void LoadViewState(object savedState)
{
base.LoadViewState(savedState);
GenerateControls();
}
private void GenerateControls()
{
foreach (string i in NoOfControls)
{
VisaUserControl ctrl = (VisaUserControl)Page.LoadControl("VisaUserControl.ascx");
ctrl.ID = i;
this.rpt1.Controls.Add(ctrl);
}
}
这是问题
protected void btnAddVisa_Click(object sender, EventArgs e)
{
List<string> temp = null;
var uc = (VisaUserControl)this.LoadControl(@"VisaUserControl.ascx");
string id = Guid.NewGuid().ToString();
uc.ID = id;
temp = NoOfControls;
temp.Add(id);
NoOfControls = temp;
rpt1.Controls.Add(uc);
}
在下图中,如果单击“添加”按钮,则出现此错误
有什么想法吗?提前致谢
答案 0 :(得分:24)
尝试从用户控件中删除ScriptManager
。
您已在.aspx
页面或母版页中的其他位置添加了ScriptManager。查看这些页面。
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
如果您在母版页上需要ScriptManager
,在这种情况下,不需要在userControl中有ScriptManager。遵循以下规则:
<asp:Scriptmanager>
。<asp:ScriptManagerProxy>
以下是MSDN
关于ScriptManager
控件的说法。
只能将一个ScriptManager控件实例添加到 页。页面可以直接或间接包含控件 在嵌套组件内部,例如用户控件,内容页面 母版页或嵌套母版页。如果页面已包含 ScriptManager控件,但需要嵌套或父组件 ScriptManager控件的附加功能,组件可以 包括ScriptManagerProxy控件。例如,ScriptManagerProxy控件允许您添加脚本和服务 特定于嵌套组件的
答案 1 :(得分:1)
您是否在使用此用户控件的页面上使用脚本管理器? 如果您使用用户控件的父页面已经定义了脚本管理器,则会出现错误。
最佳做法是在Master Page上安装ScriptManager。
从用户控件中删除脚本管理器,它应该可以正常工作。
答案 2 :(得分:1)
似乎您在usercontrol中的某个位置使用了scriptmanager。
尝试删除它,只有这个错误的原因是scriptmanager无法在页面中更多地定义一次
答案 3 :(得分:-2)
如果使用母版页并且AjaxControlToolkit无法在内部工作,则替换:
<asp:ScriptManager ID="smContent" runat="server">
</asp:ScriptManager>
有这样的事情:
<AjaxToolkit:ToolkitScriptManager ID="smContent" runat="server">
</AjaxToolkit:ToolkitScriptManager>