2013-09-30 44 views
4

当我尝试添加用户控件我得到这个错误一个ScriptManager只有一个实例可以被添加到页面的asp.net

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); 
     } 
    } 

这里是亲blem

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); 
    } 

在下面的图片,如果单击添加按钮,我得到这个错误 enter image description here

任何想法?在此先感谢

+0

您已经在您的页面的其他地方明确添加了ScriptManager。 –

+0

在用户控制页面中,我只添加了一个脚本管理器 – user2500094

回答

19

尝试从用户控件删除ScriptManager

您确定已在您的.aspx页面或MasterPage中的其他位置添加了ScriptManager。检查这些页面。

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

如果你主页上需要ScriptManager,在这种情况下,有没有必要有一个ScriptManager在用户控件。遵循以下规则:

  • 确保您在主页面上有且仅有一个<asp:Scriptmanager>
  • 确保你也有一个且只有一个每个<asp:ScriptManagerProxy>和可能需要的脚本经理

下面是什么MSDN说,关于ScriptManager控制每个内容页面。

只有一个ScriptManager控件实例可以添加到 页面。该页面可以直接包含控件,也可以在嵌套组件(如用户控件, 母版页或嵌套母版页)的内嵌组件中直接或间接包含该控件。如果页面已包含ScriptManager控件,但嵌套组件或父组件需要 ScriptManager控件的其他功能,则组件可包含ScriptManagerProxy控件,该组件可包含 。例如,ScriptManagerProxy控件,可以添加脚本和服务 特定于嵌套组件

+0

在母版页中,我不需要脚本管理器,但是其他一些页面我已经使用脚本管理器 – user2500094

+0

因此,添加您的UserControl的页面是否也包含ScriptManager?从userControl中删除ScriptManager然后 –

+0

谢谢我理解现在它的逻辑工作 – user2500094

1

您正在使用此用户控件页上使用脚本管理器? 如果您正在使用用户控件的您的父页面已经定义了脚本管理器,则会出现错误。

最佳做法是在Master Page上具有ScriptManager。

从用户控制中删除脚本管理器,它应该工作。

Take a look here

1

看来你是用在你的用户控件一些地方的ScriptManager。

尝试删除它,只有这个错误的原因是ScriptManager的不能如果使用的是母版页和AjaxControlToolkit不会在里面工作在页面

相关问题