2010-02-09 4 views
2

ASP.NET에서 updateprogress 컨트롤을 사용하는 데 문제가 있습니다. 성공적으로이 컨트롤을 사용하여 작은 프로젝트를 성공적으로 만들었지 만 동일한 코드를 사용하여 솔루션에서 간단한 .aspx 페이지를 만들면 작동하지 않습니다. 렌더링 된 HTML 코드에 불일치가 있습니다. 작동하지 않으면 섹션이 누락되었습니다 (예 :WebResource.axd가 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); 

누구에게이 문제가 있습니까? 어쩌면 자바 스크립트 참조가 누락 되었습니까?

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; 
     } 
    } 
} 

내가 말했듯이,이 코드 내 테스트 프로젝트에서 잘 작동 : 여기

는 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# 코드는 , 내 솔루션에서 사용할 때 실패합니다. (다른 페이지가 콜백 아약스 메커니즘을 방해하지 않도록 새 페이지를 만들었습니다)

아무도 도와 줄 수 있습니까?

답변

0

나는 이것을 알아 냈다. D.

Zhaph - Ben Duguid가 제안한 것처럼 web.config 파일에 문제가있었습니다. 이것은 구식 솔루션 이었기 때문에 .net 1.1에서 업그레이드 했으므로 web.config의 노드 아래에

<xhtmlConformance mode="Legacy"/> 

이 있습니다.

나는 변경하는 일이 일을 시작

<xhtmlConformance mode="Transitional"/> 

과에 : D를 asp.net 웹 사이트에서 XHTML 렌더링을 구성하는 방법에 대한 자세한 정보를 찾을 수 here

1

MS AJAX 컨트롤의 동작을 명시 적으로 지정하는 것이 좋습니다. UpdateProgress 컨트롤에서 DisplayAfter 속성을 작은 값 (예 : 1)으로 설정하여 시작하십시오. 또한 Button1을 클릭 할 때 AJAX 호출을 수행하는지 확인하려면 UpdatePanel1에 대해 ChildrenAsTriggers를 "true"로 설정하십시오.

때때로 이러한 것들을 지정하지 않으면 AJAX 컨트롤이 예상 한대로 동작하지 않습니다.

+0

설정 DisplayAfter = "1"에 대한 updateprogress 컨트롤과 ChildrenAsTriggers = "true"입니다. 동일한 결과, 내가 올바르게 이해한다면 webResource 참조는 서버 컨트롤이 그것을 사용하고있을 때 추가되지만 코드는 양쪽 페이지에서 동일하므로 문제가되지 않아야한다. 또한 비교를 위해 web.config를 살펴 보았습니다. 관련된 섹션은 같습니다. S – armannvg

1

WebResource.asxd (쿼리 문자열 매개 변수 사용) 파일을 직접 요청한 경우 (또는 FireBug을 스크립트 탭으로 전환 한 다음 스크립트 내용을 보는 경우) 무엇이 표시됩니까?

그것은 당신의 새로운 projct이 제대로이 자원 봉사의 Web.config에서 올바른 설정을하지 않는 것을 가능 - 두 프로젝트의 web.config 파일, 특히 <httpHandlers> 섹션을 비교 - 당신은 같은이 있어야합니다

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

답장을 보내 주셔서 감사합니다. 당신 말이 맞았습니다. 문제는 웹에있었습니다.config하지만 노드의 설정과 관련되어 있음 – armannvg

+0

문제 없음 - 전에 배웠던 문제가 아니므로 배워야합니다. :) –

관련 문제