2009-12-09 4 views
-1

ASP.NET 3.5를 사용하여 매우 간단하게 들리는 것을하려고합니다. 사용자는 데이터베이스에 "커뮤니티"를 추가 할 수 있어야하며 확인란을 선택하면 확인란이 선택된 경우에만 표시되는 드롭 다운 메뉴에서 상위 커뮤니티를 선택합니다. 이를 위해 UpdatePanel 내부에 Panel (처음에는 Visible = false로 설정)을 사용했습니다. 내 문제는 Internet Explorer 8과 Chrome에서 작동하지만 (Chrome이 div 대신 전체 페이지를 다시로드하지만) Firefox에서는 아무 일도 일어나지 않습니다. 쿼리는 에 모두으로 전송됩니다. 아래 코드는 모두 Web Form이 아닌 User Control 페이지에 있습니다. ASP.NET UpdatePanel이 Firefox와 함께 작동하지 않습니다.

protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      // Populate drop down menu 
      var session = HibernateModule.CurrentSession; 
      var communityList = from community in session.Linq<Community>() 
           select community; 
      communityListDropDownList.DataValueField = "id"; 
      communityListDropDownList.DataTextField = "name"; 
      communityListDropDownList.DataSource = communityList; 
      communityListDropDownList.DataBind(); 
     } 
     Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    } 

protected void TogglePanel(object sender, EventArgs e) 
    { 
     if (cbToggle.Checked) 
     { 
      parentCommunityPanel.Visible = true; 
     } 
     else 
     { 
      parentCommunityPanel.Visible = false; 
     } 
    } 

이 IE8에서 잘 작동하기 때문에

, 나는 웹 양식에서 매우 유사한 코드 (거의 동일)을 넣어 시도 :이수록

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="CommunityEditing.ascx.cs"  Inherits="Folke.Code.Element.CommunityEditing" %> 
<asp:ScriptManager ID="ScriptManager1" runat="server" /> 
<div class="content"> 
<asp:Label id="editingFeedback" runat="server" /> 
<dl> 
<dt><%=Folke.Code.Texte.L("Name") %></dt><dd><asp:TextBox ID="name" runat="server" /><br /> 
<asp:RequiredFieldValidator ID="nameReq" runat="server" ControlToValidate="name" ErrorMessage="Community name is required!" /><br /> 
</dd> 
</dl> 
<asp:CheckBox ID="cbToggle" runat="server" 
    OnCheckedChanged="TogglePanel" 
     Text="Has a parent community" AutoPostBack="True" /> 
<asp:UpdatePanel ID="parentCommunityUpdatePanel" runat="server" UpdateMode="Conditional"> 
<ContentTemplate> 
    <asp:Panel id="parentCommunityPanel" runat="server" Visible="false"> 
     <asp:DropDownList ID="communityListDropDownList" runat="server"/> 
    </asp:Panel> 
</ContentTemplate> 
<Triggers> 
    <asp:PostBackTrigger ControlID="cbToggle" /> 
</Triggers> 
</asp:UpdatePanel> 
<asp:Button runat="server" Text="Add" ID="send" onclick="send_Click" /> 
</div> 

는 코드 숨김 코드는 간단하다 , 그리고 그것은 Firefox에서 잘 작동합니다. 위의 코드는 MasterPage에 포함되어 있으므로 Web Form에서 User Control을 사용하면 "스태킹"으로 인해 문제가 발생할 수 있습니까? 나는 이것에 몇 시간을 보냈다. 그리고 나는 단지 어떤 납이나 설명을 찾을 수 없다.

편집 : 파이어 폭스의 오류 콘솔을 확인하면

는, 브라우저는이 보고서 :

오류 : http://localhost:54003/EditCommunity.aspx이 라인 : 25

라인 (25)이 처음이다 theForm은 정의되지 않은 소스 파일입니다 이 스크립트의 if 문은 다음과 같습니다.

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

페이지에 자바 스크립트 오류가 있습니까? –

+0

당신이 맞습니다. 나는 오류 세부 사항을 추가하기 위해 질문을 편집했다. – Astaar

+0

죄송합니다. 적절한 답변을 드릴 수는 없지만 페이지에서 소스를보고

같은 것을 확인하십시오. document.forms [ 'aspnetForm']이 'undefined'를 반환하면 마크 업에 문제가있을 수 있습니다. –

답변

0

문제점을 발견했습니다. 내 MasterPage에서는 태그가 섹션 안에 배치되었습니다. 양식 태그는 페이지의 섹션에 있어야합니다.

0

예, 가우스가 일치합니다. ct ... 여러 스크립트 관리자가 문제를 일으키는 것 같아서 사용자 정의 컨트롤 대신 페이지에 스크립트 관리자를 놓으십시오.

+0

스크립트 관리자를 MasterPage에 배치해도 Firefox에서 문제가 해결되지 않았습니다. – Astaar

관련 문제