2013-09-30 71 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不會在裏面工作在頁面

相關問題