사용자 생성 유효성 검사기는 '복잡한'사용자 제어에서 클라이언트 측 유효성 검사 JavaScript를 호출하지 않습니다.
-
06-09-2019 - |
문제
사용자 컨트롤 (System.web.ui.usercontrol)에서 사용자 컨트롤을 만들고 사용자 컨트롤 (System.Web.ui.WebControls.baseValidator)을위한 자체 유효성 검사기를 만들었습니다. 사용자 컨트롤이 클라이언트 측 유효성 검사를 수행하려고 할 때까지 모든 것이 잘 작동합니다.
이 문제를 디버깅하려고하는 동안 '컨트롤을 확인하기 위해'를 사용자 정의 사용자 컨트롤 대신 텍스트 상자에 설정했으며 클라이언트 측 스크립트가 잘 작동합니다! 제가 만든 복합 사용자 컨트롤에 문제가있는 것으로 보입니다. 전에이 문제를 겪은 사람이 있습니까? 사용자 정의 사용자 컨트롤에서 클라이언트 측 유효성 검사가 실패 했습니까?
추가 정보 :
복합 제어는 ajax 활성화 드롭 다운 목록 (icallbackeventhandler 사용)이므로 드롭 다운 목록 및 '로더 이미지'입니다. 클라이언트 측 JavaScript가 페이지에 기록되고 있으며, 텍스트 상자를 검증하는 경우에만 나타나는 유효성 검사 기능의 첫 번째 줄로 경고 ( 'random message')를 배치했습니다 (즉, 유효성 검사를 할 때는 그렇지 않습니다. 내 커스텀 컨트롤)
언어 : C# (ASP.NET 2.0) 및 JQuery 1.2.6
ASPX 파일에서 :
<rms:UserDDL ID="ddlUserTypes" runat="server" PreLoad="true" />
<rms:DDLValidator
ID="userTypesVal"
ControlToValidate="ddlUserTypes"
ErrorMessage="You have not selected a UserType"
runat="server"
Text="You have not selected a UserType"
Display="Dynamic"
EnableClientScript="true" />
뒤에 유효성 검사 코드에서
protected string ScriptBlock
{
get
{
string nl = System.Environment.NewLine;
return
"<script type=\"text/javascript\">" + nl +
" function " + ScriptBlockFunctionName + "(ctrl)" + nl +
" {" + nl +
" alert('Random message'); " + nl +
" var selVal = $('#' + ctrl.controltovalidate).val(); " + nl +
" alert(selVal);" + nl +
" if (selVal === '-1') return false; " + nl +
" return false; " + nl +
" }" + nl +
"</script>";
}
}
protected override void OnPreRender(EventArgs e)
{
if (this.DetermineRenderUplevel() && this.EnableClientScript)
{
Page.ClientScript.RegisterExpandoAttribute(this.ClientID, "evaluationfunction", this.ScriptBlockFunctionName);
Page.ClientScript.RegisterClientScriptBlock(GetType(), this.ScriptBlockKey, this.ScriptBlock);
}
base.OnPreRender(e);
}
내 ControlProperTiesValid ()를 알고 평가가 가능합니다.
이 문제에 대한 도움을 주셔서 감사합니다.
크리스마스 축가.
올바른 솔루션이 없습니다
다른 팁
BaseValidator 대신 CustomValidator를 사용해보십시오.
http://msdn.microsoft.com/en-us/library/9eee01cx(vs.71).aspx
JS가 호출되도록 ClientValidationFunction을 설정하십시오.