WebResource.axd未以HTML格式呈现

时间:2010-02-09 17:35:45

标签: c# asp.net javascript ajax asp.net-3.5

我在ASP.NET中使用updateprogress控件时遇到问题。我成功地使用此控件创建了一个小项目,但是当我使用相同的代码在我的解决方案中创建一个简单的.aspx页面时,它不起作用。呈现的HTML代码中存在不匹配的情况,它不起作用,缺少部分,例如

<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUKMTQ0OTI0ODUwMg9kFgICAw9kFgICBQ9kFgJmD2QWAgIDDw8WAh4EVGV4dAVqMTc6Mjc6MzA8YnIgLz4xNzoyNzozMDxiciAvPjE3OjI3OjMwPGJyIC8+MTc6Mjc6MzA8YnIgLz4xNzoyNzozMDxiciAvPjE3OjI3OjMwPGJyIC8+MTc6Mjc6MzA8YnIgLz4xNzoyNzozMGRkZIkvHCekERlfS9y4PA2asxGaEowE" />

<script type="text/javascript">
//<![CDATA[
var theForm = document.forms['form1'];
if (!theForm) {
    theForm = document.form1;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
//]]>
</script>

<script src="/WebResource.axd?d=xwJ8mgqm3wQN2acMjQykvA2&amp;t=633941258702151333" type="text/javascript"></script>

Sys.WebForms.PageRequestManager._initialize('ScriptManager1', document.getElementById('form1'));
Sys.WebForms.PageRequestManager.getInstance()._updateControls(['tUpdatePanel1'], [], [], 90);

有人有这个问题吗?也许我错过了一个javascript参考?

以下是页面的html设置

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="UpdateProgressTest._Default" %>

<!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 id="Head1" runat="server"> 
    <title>Update Progress</title> 
   </head> 

   <body> 
       <form id="form1" runat="server">
       <div>
       <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
       Some page content<br/>

       <asp:UpdateProgress ID="UpdateProgress1" runat="server" DynamicLayout="true" AssociatedUpdatePanelID="UpdatePanel1">
            <ProgressTemplate> Processing… </ProgressTemplate>
       </asp:UpdateProgress> 

       More page content<br />

       <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
           <ContentTemplate> <div style="border-style:solid;background-color:gray;">
                <asp:Button ID="Button1" runat="server" Text="Update"/><br/><br/>
                <asp:Label runat="server" ID="time1"></asp:Label><br/></div><br/>
           </ContentTemplate>
       </asp:UpdatePanel><br/>
       </div> 
       </form>
   </body> 
</html> 

以下是同一页面的C#代码后面部分:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace UpdateProgressTest
{
    public partial class _Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            System.Threading.Thread.Sleep(4000);
            // base.OnLoad(e);

            string theTime = DateTime.Now.ToLongTimeString();
            for (int i = 0; i < 3; i++)
            {
                theTime += "<br />" + theTime;
            }

            time1.Text = theTime; 
        }
    }
}

正如我所说,这段代码在我的测试项目中工作正常,但在我的解决方案中使用它时失败了(我创建了一个新页面,只是为了确保我的其他控件不会干扰回调ajax机制)

有人可以帮忙吗?

3 个答案:

答案 0 :(得分:1)

我总是觉得明确指定MS AJAX控件的行为是有益的。首先将DisplayAfter属性设置为UpdateProgress控件上的小(如1)。另外,将UpdateAsnelTriggers设置为“true”以确保它在单击Button1时进行AJAX调用。

有时当我没有指定这些内容时,AJAX控件的行为与我期望的不同。

答案 1 :(得分:1)

如果您直接请求WebResource.asxd(带有查询字符串参数)文件(或者如果您使用FireBug切换到“脚本”选项卡,然后查看脚本的内容),您会看到什么?

您的新项目可能没有在web.config中正确设置以正确提供此资源 - 比较两个项目web.config文件,尤其是<httpHandlers>部分 - 您应该具有以下内容:

<add path="WebResource.axd" verb="GET"
     type="System.Web.Handlers.AssemblyResourceLoader" validate="True" />

答案 2 :(得分:0)

我只是搞清楚这一点:D。

问题出在web.config文件中,因为Zhaph-Ben Duguid建议。这是一个旧的解决方案,所以我从.net 1.1升级它,因此它有

<xhtmlConformance mode="Legacy"/> 

在web.config中的节点下。

我把它改为

<xhtmlConformance mode="Transitional"/> 

并且事情开始起作用了:D可以找到有关如何在asp.net网站中配置Xhtml渲染的更多信息here