유효성 검사 컨트롤 (예 : RequiredFieldValidator
)을 사용할 때 ASP.NET에서 클라이언트 측 프레임 워크는 JS 기능 Page_ClientValidate
을 실행합니다. 이 함수는 (주어진 ValidationGroup
) 페이지의 모든 컨트롤의 유효성을 검사하고 validator 컨트롤의 span
태그의 DOM 요소의 매개 변수로 JS 함수 ValidatorUpdateDisplay
을 호출합니다.첫 번째로 UpdatePanel에서 컨트롤/유효성 검사기가 포스트 백에로드 될 때 사용자 정의 ValidatorUpdateDisplay 함수를 사용하는 방법은 무엇입니까?
ValidatorUpdateDisplay
은 유효성 검사 결과에 따라 span
태그의 가시성을 토글합니다.
웹 응용 프로그램에서 ValidatorUpdateDisplay
JS 함수를 오버라이드하여 유효성 검사 시나리오에서 더 많은 기능을 제공합니다 (예 : 컨트롤 주위의 빨간색 테두리, 실패한 첫 번째 컨트롤의 팝업 표시 및 스크롤).
이제는 UpdatePanel에서 포스트 백 이후에 내 컨트롤 (제출 버튼 포함)이 처음 표시 될 때까지 잘 작동합니다. 초기로드를 눌러 bShow
후
<asp:ScriptManager runat="server" />
<asp:UpdatePanel ID="upTest" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="bShow" runat="server" UseSubmitBehavior="false" Text="SHOW" OnClick="bShow_Click" />
<asp:Panel ID="pContent" runat="server" Visible="false">
<asp:TextBox ID="tbTest" runat="server" />
<asp:RequiredFieldValidator ID="rfvTest" runat="server" ControlToValidate="tbTest" Text="Not valid" />
<asp:Button ID="bTest" runat="server" UseSubmitBehavior="false" Text="TEST" />
</asp:Panel>
</ContentTemplate>
</asp:UpdatePanel>
<script type="text/javascript">
function ValidatorUpdateDisplay(val) {
debugger; // this will not be reached
}
</script>
protected void bShow_Click(object sender, EventArgs e)
{
this.pContent.Visible = true;
}
는 pContent
를 표시합니다. 이제 tbTest.Text
을 비워두고 bTest
을 누르면 재정의 된 ValidatorUpdateDisplay
기능을 입력해야하지만 프레임 워크의 기능에 들어가고 rfvTest
에서 "유효하지 않음"을 표시합니다.
당신이 true
에 pContent.Visible
을 변경하고 원하는 효과가 일어날 초기로드 후 bTest
을 누르면 : 그것은 사용자 정의 ValidatorUpdateDisplay
기능을 입력하고 "유효하지 않습니다"표시되지 않습니다.
bTest
단추를 UpdatePanel
밖으로 이동해도 문제가 지속됩니다.
UpdatePanel
에서 어떻게 작동합니까?