2010-05-25 5 views
0

이것은 나에게 이상한 것 같습니다. 이 코드와 함께 잘 작동 VB에서 수행 콜백 핸들러가 : A-OK를 내가 값을 변경할 수 있으며, 모든 것이div 내에서 ASP.NET 드롭 다운 목록 콜백이 작동하지 않습니다.

<!-- Div Outside Form --> 
<div class="container"> 
<form id="querydata" runat="server"> 
<asp:DropDownList runat="server" ID="myddl" AutoPostBack="true" OnSelectedIndexChanged="myddlhandler"> 
<asp:ListItem>Hello</asp:ListItem> 
<asp:ListItem>Goodbye</asp:ListItem> 
</asp:DropDownList> 
<asp:Label runat="server" ID="label1"></asp:Label> 
</form> 
</div> 
<!-- Yep, they're matching --> 

을,하지만이에 (양식 내부 사업부를) 코드를 변경하는 경우 :

<form id="querydata" runat="server"> 
<!-- Div inside form doesn't work :(--> 
<div class="container"> 
<asp:DropDownList runat="server" ID="myddl" AutoPostBack="true" OnSelectedIndexChanged="myddlhandler"> 
<asp:ListItem>Hello</asp:ListItem> 
<asp:ListItem>Goodbye</asp:ListItem> 
</asp:DropDownList> 
<asp:Label runat="server" ID="label1"></asp:Label> 
</div> 
</form> 

다시 게시가 작동하지 않습니다. ASP가 어떻게 작동해야합니까? 아니면 나를 위해서만 작동하는 마법 같은 오류입니까? 그리고 가장 중요한 것은, 만약 ASP가 이런 식으로 작동하지 않는다면 어떻게해야합니까?

감사합니다.

+0

이 페이지에 아약스/jquery/update 패널이 있습니까? 디버깅에 도움이 될 수 있도록 모든 코드가 포함 된 완전한 작동 테스트를 게시 할 수 있습니까? –

답변

0

글쎄, 내가 틀렸다는 것이 드러났습니다. 다른 비 ASP 폼 요소들이 문제가되는 div가 아니 었습니다.

나쁜 :

<div> 
    <form runat="server"> 
     <asp:DropDownList runat="server" autopostback="true" onselectedindexchanged="myhandlername"> 
     <asp:ListItem>One</asp:ListItem> 
     <asp:ListItem>Two</asp:ListItem> 
     </asp:DropDownList> 
     <div> 
     <input type="text" id="mytext" /> 
     </div> 
    </form> 
</div> 

좋은 :

<div> 
    <form runat="server"> 
     <asp:DropDownList runat="server" autopostback="true" onselectedindexchanged="myhandlername"> 
     <asp:ListItem>One</asp:ListItem> 
     <asp:ListItem>Two</asp:ListItem> 
     </asp:DropDownList> 
     <div> 
     <asp:TextBox runat="server" ID="mytext></asp:TextBox> 
     </div> 
    </form> 
</div> 

그래서 분명히 AutoPostBack을 사용 ASP 형태의 구성 요소 때 정상 HTML 양식 구성 요소와 호환되지 않습니다.

0

요소 유형을 혼합 할 때 드롭 다운 선택 사항을 변경할 때 양식이 여전히 포스트 백해야하지만 html 요소의 값은 viewstate에 의해 '덮여지지 않으므로 보존되지 않습니다.

0

어떤 차이가 있는지 모르겠지만 답장에 <form> 태그를 닫지 않는 것으로 나타났습니다 (여전히 답을 원할 경우 질문에 대한 수정이되어야합니다). 또한 "ASP 양식 구성 요소"는 일부 JavaScript와 함께 "일반 HTML 양식 구성 요소"로 렌더링되므로 "호환되지 않아야"하는 이유가 없습니다.

+0

아, 고마워 .- HTML이 정말로 "올바른"코드를 자유 주의적으로 받아들이 기 때문에 실제로는 (보통) 차이가 없다. 그러나 그것은 나쁜 형태의 입니다. 나는 그들이 "정규"코드 (보기 소스, 우)로 바뀌는 것을 안다. 그래서 나는 생각이 결코 나에게 일어나지 않았다. Robin에 대한 약간의 테스트 예제를 만들려고 시도 할 때까지는 아니었지만 실제로는 "정상적인"구성 요소가 포스트 백을 깨뜨린 것을 발견했습니다. 나는 단서가 없다. 그리고 그것은 전체적으로 많은 의미를 가지지 않는다. 대답은 - 대답을 발견 한 이후로 생각합니다. 대답으로 게시 할 수도 있습니다. –

+0

@Wayne : 아직 문제라고 생각했지만 지금 당신의 요지를 보았습니다. 그렇게 행동하는 것이 놀랍습니다. ID가 충돌하지 않는 한 ASP가 아닌 양식 태그로 인해 문제가 발생하지 않는다고 상상했을 것입니다. 나는 그것을 한번도 시도한 적이 없다고 생각합니다. runat = "server"가없는 일반

태그를 가질 수 있으며 거기에 HTML 요소를 배치 할 수 있습니다. 물론 별도로 작업하거나 ViewState를 사용하지 않아도됩니다. –

관련 문제