사용자 생성 유효성 검사기는 '복잡한'사용자 제어에서 클라이언트 측 유효성 검사 JavaScript를 호출하지 않습니다.

StackOverflow https://stackoverflow.com/questions/586229

문제

사용자 컨트롤 (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을 설정하십시오.

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.customvalidator.clientValidationFunction.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top