我已经创建(从System.Web.UI.UserControl)的用户控制,并创建了自己的验证器(从System.Web.UI.WebControls.BaseValidator)的用户控制。直到我试图让用户控制做客户端验证一切工作正常。

在试图调试这个问题我已经设置“控件来验证”到一个文本框,而不是自定义用户控件,并且客户端脚本正常工作!在我看来,它有一个问题,一个与我创建了我复合的用户控制。有没有人遇到过这个问题?有其他人看到客户端验证的自定义用户控件失败?

一些额外的信息:

在复合控制是一个下拉列表和“加载程序映像”,因为它是启用下拉列表(使用ICallbackEventHandler)一个AJAX。我知道,JavaScript是被写入的页面,并放置一个警告(“随机信息”),如,只有当它是验证一个文本框出现在验证函数的第一行客户端(即不是当它被验证我的自定义控制)

语言: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()和EvaluateIsValid()工作正常。

我很欣赏在这个问题上的任何帮助。

诺尔。

没有正确的解决方案

其他提示

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top