我遇到了UpdatePanel的问题,它总是导致整页回发而不是异步回发。
这是aspx代码
<%@ 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>
逻辑背后没有代码
在生成的HTML中,我注意到缺少注册UpdatePanels的所有javascript逻辑,可能出现什么问题?
<!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&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>
这是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>
提前致谢
答案 0 :(得分:4)
我发现问题是问题!!!
所以,心理记录:不允许使用xhtmlComformance:D
可以找到更多信息here。
<强>摘录:强>
除非您知道您的网站在XHTML模式下运行时遇到的已知问题(以及您还没有时间修复),我总是建议您从web.config文件中删除该部分(或者您可以明确地将其设置为“Transitional”或“Strict”)。
这将使您的HTML输出标准符合要求。除此之外,这将导致服务器控件中的HTML“格式良好” - 意味着打开和关闭标记元素始终匹配。当您使用AJAX技术动态替换页面上某些HTML元素的内容时,这一点尤为重要(否则客户端JavaScript有时会对容器元素产生混淆并导致错误)。它还将确保ASP.NET AJAX与您的站点一起正常工作。
答案 1 :(得分:0)
您可能需要将“EnablePartialRendering = true”添加到脚本管理器
答案 2 :(得分:-2)
我的第一个想法是从所有ID名称中删除下划线。