2009-08-06 15 views
1

Ich habe ein Problem mit UpdatePanel, wo es immer eine ganze Seite Postback anstelle einer asynchronen Postback verursacht.UpdatePanel verursacht volle Seite Postback

Hier 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> 

kein Code hinter Logik

Im resultierenden HTML ich zu bemerken, dass alle die JavaScript-Logik für die Update Registrierung fehlt, was falsch sein kann?

<!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> 

Dies ist die Datei Web.config

<?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> 

Vielen Dank im Voraus

+0

, was mit den Unterstrichen in den ID-Eigenschaften ist hinzuzufügen? –

Antwort

4

Ich fand das Problem ist das Problem !!!

So, mentale Notiz: Verbietet Verwendung von xhtmlComformance: D

Weitere Informationen finden Sie here finden.

Auszug:

Sofern Sie nicht bekannter Probleme wissen, dass Ihre Website hat, wenn sie in XHTML-Modus ausgeführt wird (und die Sie keine Zeit haben noch nicht zu beheben), würde ich immer empfehlen die Entfernung Abschnitt aus Ihrer Datei web.config (oder Sie können explizit auf "Transitional" oder "Strict" setzen).

Dies wird Ihre HTML-Ausgabe-Standards kompatibel machen. Dadurch wird unter anderem der HTML-Code Ihrer Serversteuerelemente "wohlgeformt" - das bedeutet, dass offene und schließende Tag-Elemente immer übereinstimmen. Dies ist besonders wichtig, wenn Sie AJAX-Techniken verwenden, um den Inhalt bestimmter HTML-Elemente auf Ihrer Seite dynamisch zu ersetzen (andernfalls wird das clientseitige JavaScript manchmal über Containerelemente verwirrt und kann zu Fehlern führen). Es stellt auch sicher, dass ASP.NET AJAX gut mit Ihrer Website funktioniert.

+1

Ich glaube nicht, dass das ein Problem ist. Wir verwenden UpdatePanel mit DHTML-Konformität auf allen unseren Seiten. Also sagen Sie, dass das Entfernen der Konformität automatisch bewirkt, dass das Update-Panel nur teilweise Seitenpostback sendet? –

+1

XhtmlComformance zu Legacy war das Problem http://weblogs.asp.net/scottgu/archive/2006/12/10/gotcha-don-t-use-xhtmlconformance-mode-legacy-with-asp-net-ajax .aspx – Paleta

-2

Meine erste Idee wäre Unterstrichen von allen ID-Namen zu entfernen.

0

Sie müssen möglicherweise "EnablePartialRendering = true" an den Skript Manager

+1

Das ist zwar die Standardeinstellung, aber es lohnt sich, es zu versuchen. –

Verwandte Themen