2009-12-23 40 views
0

我的UserControl出現問題。它有UpdatePanel內部,但它必須放在標籤內部才能工作(否則,PostBack不是異步的)用戶控件中的UpdatePanel(嵌套的Forms問題)

問題是,如果我把UserControl放在例如Default.aspx頁面出現錯誤 「一頁只能有一個服務器端的Form標籤」

如何應對呢?

[編輯]

的UserControl.ascx代碼:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PodmiotyZwolnioneCtrl.ascx.cs" Inherits="FormularzPodatkowy.PodmiotyZwolnioneCtrl" %> 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %> 

<link href="AjaxStyle.css" rel="stylesheet" type="text/css" /> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 

<body> 
<form id="form1" runat="server"> 
<div> 
     <asp:UpdatePanel ID="UpdatePanel1" 
         UpdateMode="Conditional" 
         runat="server"> 
      <ContentTemplate> 
       <fieldset> 
       <legend>UpdatePanel content</legend> 
       <!-- Other content in the panel. --> 
       <%=DateTime.Now.ToString() %> 
       <br /> 
       <asp:Button ID="Button1" 
          Text="Refresh Panel" 
          runat="server" /> 
       </fieldset> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </div> 
</form> 
</body> 
</html> 

的WebForm1.aspx的代碼:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="FormularzPodatkowy.WebForm1" %> 

<%@ Register src="PodmiotyZwolnioneCtrl.ascx" tagname="PodmiotyZwolnioneCtrl" tagprefix="uc1" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
<title></title> 
</head> 
<body> 
<form id="form1" runat="server"> 
    <asp:ScriptManager ID="ScriptManager1" runat="server" /> 
    <uc1:PodmiotyZwolnioneCtrl ID="PodmiotyZwolnioneCtrl1" runat="server" /> 
</form> 
</body> 
</html> 
+0

你可以發佈一些示例代碼? – jchapa 2009-12-23 21:39:54

+0

代碼被添加 – Tony 2009-12-23 21:49:40

回答

4

你的代碼應該是:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="PodmiotyZwolnioneCtrl.ascx.cs" Inherits="FormularzPodatkowy.PodmiotyZwolnioneCtrl" %> 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %> 

<link href="AjaxStyle.css" rel="stylesheet" type="text/css" /> 

<div> 
     <asp:UpdatePanel ID="UpdatePanel1" 
         UpdateMode="Conditional" 
         runat="server"> 
      <ContentTemplate> 
       <fieldset> 
       <legend>UpdatePanel content</legend> 
       <!-- Other content in the panel. --> 
       <%=DateTime.Now.ToString() %> 
       <br /> 
       <asp:Button ID="Button1" 
          Text="Refresh Panel" 
          runat="server" /> 
       </fieldset> 
      </ContentTemplate> 
     </asp:UpdatePanel> 
    </div> 

它看起來像你轉換一個頁面控制,忘了

同時刪除特定頁面的元素,如果你的回發不同步,看你的web.config爲:

<xhtmlConformance mode="Legacy"/> 

並將其更改爲:

<xhtmlConformance mode="Transitional"/> 

我剛剛花了三天的時間找到UpdatePanel的解決方案,總是發回服務器。

+0

+ 1擊敗了我。 :-) – jchapa 2009-12-23 22:00:23

+0

我解決了這個問題,我使用了你的代碼,然後將asp:ScriptManager從.ascx文件移動到我的Default.aspx頁面。這工作! :) P.S.我會檢查你的web.config解決方案,這聽起來很有用 感謝您的幫助! – Tony 2009-12-23 22:02:53

1

您應該同時檢查用戶控件和頁面,並確保您的標記中只有一個<form id='form1' runat='server'>標記。有不止一個會給你你遇到的錯誤。

祝你好運,並希望這有助於一些。

+0

我知道,但是如果只有1個窗體,UpdatePanel將不會「工作」 – Tony 2009-12-23 21:50:59