ASP.Net/Ajax/UpdatePanel

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

Configure Web.Config in order to use asp:ScriptManager

   <source lang="csharp">

File: Default.aspx <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">

   protected void btnSubmit_Click(object sender, EventArgs e)
   {
       throw new Exception("Server Error");
   }

</script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server">

   <title>UpdatePanel Error</title>

</head> <body>

   <form id="form1" runat="server">
   <asp:ScriptManager
       id="sm1"
       Runat="server" />
   <asp:UpdatePanel
       id="up1"
       runat="server">
       <ContentTemplate>
       <asp:Button
           id="btnSubmit"
           Text="Submit"
           OnClick="btnSubmit_Click"
           Runat="server" />
       </ContentTemplate>
   </asp:UpdatePanel>
   </form>

</body> </html>


Web.Config

<configuration>

   <system.web>
       <customErrors mode="Off"/>
       <compilation debug="true"/>
       <pages>
           <controls>
               <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
           </controls>
       
       </pages>    
   </system.web>

</configuration>

</source>
   
  


Database messages being updated asynchronously.

   <source lang="csharp">

<%@ Page Language="C#" %> <!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">
   <asp:ScriptManager ID="sm1" runat="server" />
   <asp:Timer ID="Timer1" Interval="5000" runat="server" />
   <asp:UpdatePanel ID="up1" runat="server">
   <Triggers>
       <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
   </Triggers>
   <ContentTemplate>
   Last Refresh <%= DateTime.Now.ToString("T") %>

   <asp:ListView
       id="lstMessages"
       DataSourceID="srcMessages"
       Runat="server">
       <LayoutTemplate>
       </LayoutTemplate>
       <ItemTemplate>
               Posted by <%# Eval("PostedBy") %>
               <%# Eval("Post") %>
       </ItemTemplate>
   </asp:ListView>
   </ContentTemplate>
   </asp:UpdatePanel>
   <asp:ObjectDataSource
       id="srcMessages"
       TypeName="Message"
       SelectMethod="Select"
       Runat="server" />
   </form>

</body> </html>

</source>
   
  


Handling UpdatePanel Errors Gracefully

   <source lang="csharp">

You enable a custom error page by adding the following element to the system.web section of your web configuration file: <customErrors mode="On" defaultRedirect="ErrorPage.aspx" />

File: Default.aspx <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">

   protected void btnSubmit_Click(object sender, EventArgs e)
   {
       throw new Exception("Server Error");
   }

</script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server">

   <title>UpdatePanel Error</title>

</head> <body>

   <form id="form1" runat="server">
   <asp:ScriptManager
       id="sm1"
       Runat="server" />
   <asp:UpdatePanel
       id="up1"
       runat="server">
       <ContentTemplate>
       <asp:Button
           id="btnSubmit"
           Text="Submit"
           OnClick="btnSubmit_Click"
           Runat="server" />
       </ContentTemplate>
   </asp:UpdatePanel>
   </form>

</body> </html>

You can disable custom error pages in the case of an asynchronous postback by adding an AllowCustomErrorRedirect attribute to the ScriptManager tag, like this: <asp:ScriptManager

  id="sm1"
  AllowCustomErrorsRedirect="false"
  Runat="server" />
  

Web.Config

<configuration>

   <system.web>
       <customErrors mode="Off"/>
       <compilation debug="true"/>
       <pages>
           <controls>
               <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
           </controls>
       
       </pages>    
   </system.web>

</configuration>

</source>
   
  


On the server, you can handle the ScriptManager control"s AsyncPostBackError event to customize the error message transmitted to the client.

   <source lang="csharp">

File: UpdatePanelErrorServer.aspx <%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server">

   protected void btnSubmit_Click(object sender, EventArgs e)
   {
       throw new Exception("Server Error");
   }
   protected void sm1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
   {
       sm1.AsyncPostBackErrorMessage = "A server error occurred";
   }

</script> <html xmlns="http://www.w3.org/1999/xhtml"> <head id="Head1" runat="server">

   <title>UpdatePanel Error Server</title>

</head> <body>

   <form id="form1" runat="server">
   <asp:ScriptManager
       id="sm1"
       OnAsyncPostBackError="sm1_AsyncPostBackError"
       Runat="server" />
   <asp:UpdatePanel
       id="up1"
       runat="server">
       <ContentTemplate>
       <asp:Button
           id="btnSubmit"
           Text="Submit"
           OnClick="btnSubmit_Click"
           Runat="server" />
       </ContentTemplate>
   </asp:UpdatePanel>
   </form>

</body> </html>

</source>