UpdatePanel causes full page postback

I having an issue with UpdatePanel where its always causing a full page postback instead of an async one.

Here’s aspx code

    <%@ Page language="c#" Codebehind="RegistrationsOld.aspx.cs" AutoEventWireup="True" Inherits="Registrations.Register" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Registrations</title>
    </head>
    <body>
        <form id="_mainForm" runat="server">
            <asp:ScriptManager ID="_scriptManager" runat="server"></asp:ScriptManager>
            <asp:UpdatePanel ID="_updatePanel" runat="server">
                <ContentTemplate>
                    <asp:Button ID="_postBack" runat="server" Text="Postback!!!" />
                    <%=DateTime.Now%>
                </ContentTemplate>
            </asp:UpdatePanel>
        </form>
    </body>
</html>

No code behind logic

In the resulting HTML I’m noticing that all the javascript logic for registering UpdatePanels is missing, what can be wrong?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Registrations</title>
    </head>
    <body>
        <form name="_mainForm" method="post" action="RegistrationsOld.aspx" id="_mainForm">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="FKfjiCZfvms4LEL11blfrXnmC/wScY2XjDvMtkIBXPqdutqXjc+flWgtcQ5WHHxU" />


<script src="/Registrations/ScriptResource.axd?d=ZqE69ckaWSPtXLlB_ypEoaexcnFR_4HaKEIAj2L1SjguUUzm1b2ynhnRSUdcjmkKP0wNTeyoNrwIk6T5YgXcACfck9AjnPvFflFbAgvZJgM1&amp;t=633306437776352439" type="text/javascript"></script>
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="YJ2A6HeD5ZInaAtsQI6zV2+cnGmR39d5mvZmEVdtWCHnBZriZCyd4g==" />

            <div id="_updatePanel">

                    <input type="submit" name="_postBack" value="Postback!!!" id="_postBack" />
                    8/6/2009 5:23:40 PM

</div>


<script type="text/javascript">
<!--
Sys.Application.initialize();
// -->
</script>
</form>
    </body>
</html>

This is the web.config file

<?xml version="1.0"?>
<configuration>
    <configSections>
        <sectionGroup name="system.web.extensions" type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
            <sectionGroup name="scripting" type="System.Web.Configuration.ScriptingSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
                <section name="scriptResourceHandler" type="System.Web.Configuration.ScriptingScriptResourceHandlerSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication"/>
                <sectionGroup name="webServices" type="System.Web.Configuration.ScriptingWebServicesSectionGroup, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
                    <section name="jsonSerialization" type="System.Web.Configuration.ScriptingJsonSerializationSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="Everywhere" />
                    <section name="profileService" type="System.Web.Configuration.ScriptingProfileServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
                    <section name="authenticationService" type="System.Web.Configuration.ScriptingAuthenticationServiceSection, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="false" allowDefinition="MachineToApplication" />
                </sectionGroup>
            </sectionGroup>
        </sectionGroup>
    </configSections>

    <connectionStrings>
        <add name="ConnectionString" connectionString="server=xxx.xxx.xxx.xxx;Trusted_Connection=false;database=Portal;User ID=*****;Password=*****;Enlist=False"
          providerName="Company.Framework.Data.Providers.SqlServerDatabase, Company.Framework.Data" />
        <add name="TestConnectionString" connectionString="Data Source=xxx.xxx.xxx.xxx;Initial Catalog=Portal;User ID=*****;Password=*****"
          providerName="System.Data.SqlClient" />
    </connectionStrings>
    <appSettings>
        <add key="SiteLink" value=""/>
        <add key="EnableMail" value="false"/>
    </appSettings>
    <system.web>
        <pages validateRequest="true">
            <controls>
                <add tagPrefix="asp" namespace="System.Web.UI" assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            </controls>
        </pages>
        <authorization>
            <allow users="?"/>
        </authorization>
        <!-- set debugmode to false for running application -->
        <compilation debug="true"/>
        <!--The Portal Starter Kit supports either Forms authentication (Internet)
            or Windows authentication (for intranets).  Forms Authentication is
            the default.  To change to Windows authentication, comment the 
            <authentication mode="Forms"> section below, and uncomment the 
            <authentication mode="Windows"> section. -->
        <!--<sessionState timeout="60" cookieless="false" />-->
        <authentication mode="None"/>
        <!--<authentication mode="Windows" />
        <authorization>
            <deny users="?" />
        </authorization>-->
        <httpRuntime useFullyQualifiedRedirectUrl="true"/>
        <globalization fileEncoding="utf-8" requestEncoding="utf-8" uiCulture="en-US" culture="en-US" responseEncoding="utf-8"/>
        <!-- Adapter configuration for mobile controls used in the portal -->
        <mobileControls>
            <device name="PortalHtmlDeviceAdapters" inheritsFrom="HtmlDeviceAdapters">
                <control name="ASPNET.StarterKit.Portal.MobileControls.TabbedPanel, ASPNETPortal" adapter="ASPNET.StarterKit.Portal.MobileControls.HtmlTabbedPanelAdapter,ASPNETPortal"/>
                <control name="ASPNET.StarterKit.Portal.MobileControls.LinkCommand, ASPNETPortal" adapter="ASPNET.StarterKit.Portal.MobileControls.HtmlLinkCommandAdapter,ASPNETPortal"/>
            </device>
            <device name="PortalChtmlDeviceAdapters" inheritsFrom="ChtmlDeviceAdapters">
                <control name="ASPNET.StarterKit.Portal.MobileControls.TabbedPanel, ASPNETPortal" adapter="ASPNET.StarterKit.Portal.MobileControls.ChtmlTabbedPanelAdapter,ASPNETPortal"/>
            </device>
            <device name="PortalWmlDeviceAdapters" inheritsFrom="WmlDeviceAdapters">
                <control name="ASPNET.StarterKit.Portal.MobileControls.TabbedPanel, ASPNETPortal" adapter="ASPNET.StarterKit.Portal.MobileControls.WmlTabbedPanelAdapter,ASPNETPortal"/>
            </device>
        </mobileControls>
        <!-- Mobile device filters used for customizing portal -->
        <deviceFilters>
            <filter name="isJScript" compare="javascript" argument="true"/>
            <filter name="isPocketIE" compare="browser" argument="Pocket IE"/>
            <filter name="isHTML32" compare="preferredRenderingType" argument="html32"/>
        </deviceFilters>
        <trace enabled="true"/>
        <httpHandlers>
            <remove verb="*" path="*.asmx"/>
            <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
            <add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
            <remove verb="GET" path="FtbWebResource.axd" />
            <remove verb="POST,GET" path="ajaxpro/*.ashx" />
            <!--<add verb="GET" 
                path="FtbWebResource.axd" 
                type="FreeTextBoxControls.AssemblyResourceHandler, FreeTextBox" /> -->
        </httpHandlers>
        <httpModules>
            <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
        </httpModules>
        <machineKey validationKey="AutoGenerate" decryptionKey="AutoGenerate" validation="3DES"/>
        <customErrors mode="Off"/>
        <xhtmlConformance mode="Legacy"/>
    </system.web>
</configuration>

Thanks in advance

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

I found the problem is the problem!!!

So, mental note: Disallow use of xhtmlComformance 😀

More information can be found here.

Excerpt:

Unless you know of known issues that your site has when running in XHTML mode (and which you don’t have time yet to fix), I’d always recommend removing the section from your web.config file (or you can explicitly set it to “Transitional” or “Strict”).

This will make your HTML output standards compliant. Among other things, this will cause the HTML from your server controls to be “well formed” – meaning open and close tag elements always match. This is particularly important when you are using AJAX techniques to dynamically replace the contents of certain HTML elements on your page (otherwise the client-side JavaScript sometimes gets confused about container elements and can lead to errors). It will also ensure that ASP.NET AJAX works fine with your site.

Method 2

You may need to add “EnablePartialRendering = true” to the script manager

Method 3

My first idea would be to remove underscores from all the ID names.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x