Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 页面加载时不可见的用户控件的客户端验证_C#_Asp.net_Validation - Fatal编程技术网

C# 页面加载时不可见的用户控件的客户端验证

C# 页面加载时不可见的用户控件的客户端验证,c#,asp.net,validation,C#,Asp.net,Validation,我创建了一个用户控件,该控件具有一些自定义客户端验证。我通过RegisterStartupScript嵌入Javascript,并通过RegisterExpandoAttribute将信息传递给验证。但是,用户控件在PageLoad上不可见,当我使用document.getElementById时,会得到null值 这是我目前的代码: public void Page_Load(object sender, EventArgs e) { ClientS

我创建了一个用户控件,该控件具有一些自定义客户端验证。我通过RegisterStartupScript嵌入Javascript,并通过RegisterExpandoAttribute将信息传递给验证。但是,用户控件在PageLoad上不可见,当我使用document.getElementById时,会得到null值

这是我目前的代码:

    public void Page_Load(object sender, EventArgs e) 
    { 
            ClientScriptManager cs = Page.ClientScript; 
            Type cstype = this.GetType(); 
            if (!cs.IsStartupScriptRegistered(cstype, "ValidatorType")) 
            { 
                String DateValidator; 
                DateValidator = "<script type=\"text/javascript\">\n"; 
                DateValidator += "function ValidateDate(source, args) {\n"; 
                DateValidator += "   var ddDay = document.getElementById(source.day);\n"; 
                DateValidator += "   var day = ddDay.selectedIndex;\n"; 
                DateValidator += "   var ddMonth = document.getElementById(source.month);\n"; 
                DateValidator += "   var month = ddMonth.selectedIndex;\n"; 
                DateValidator += "   var ddYear = document.getElementById(source.year);\n"; 
                DateValidator += "   var year = ddYear.selectedIndex;\n"; 
                DateValidator += "   if (day == 0 || month == 0 || year == 0)\n"; 
                DateValidator += "      args.IsValid = false;\n"; 
                DateValidator += "   else\n"; 
                DateValidator += "      args.IsValid = true;\n"; 
                DateValidator += "   }\n"; 
                DateValidator += "</script>"; 
                cs.RegisterStartupScript(cstype, "ValidatorType", DateValidator); 
            } 

            cs.RegisterExpandoAttribute(reqDueDate.ClientID, "month", ddMonth.ClientID); 
            cs.RegisterExpandoAttribute(reqDueDate.ClientID, "day", ddDay.ClientID, false); 
            cs.RegisterExpandoAttribute(reqDueDate.ClientID, "year", ddYear.ClientID, false); 
    }

在服务器端不可见的控件在服务器生成的客户端上不是html格式的。所以它应该是空的。使用javascript使其不可见或隐藏,并在需要时使用javascript使其再次可见

脚本应在控件上呈现后执行

在客户端上隐藏服务器控件

document.getElementById('<%= pnlMail.ClientID %>').style.display = 'none'; 
document.getElementById('htmlControlID').style.display = 'none'; 

在服务器端不可见的控件在服务器生成的客户端上不是html格式的。所以它应该是空的。使用javascript使其不可见或隐藏,并在需要时使用javascript使其再次可见

脚本应在控件上呈现后执行

在客户端上隐藏服务器控件

document.getElementById('<%= pnlMail.ClientID %>').style.display = 'none'; 
document.getElementById('htmlControlID').style.display = 'none'; 
一种更“服务器端”的方法是在服务器上设置值,这样您就不依赖javascript了。ASCX:

    <asp:TextBox runat="server" ID="uxToHide" />
使用占位符增加了一点复杂性,但也不算太糟糕。ASCX:

    <asp:PlaceHolder ID="uxToHide" runat="server" />
一种更“服务器端”的方法是在服务器上设置值,这样您就不依赖javascript了。ASCX:

    <asp:TextBox runat="server" ID="uxToHide" />
使用占位符增加了一点复杂性,但也不算太糟糕。ASCX:

    <asp:PlaceHolder ID="uxToHide" runat="server" />

在浏览器上获取占位符并用javascript隐藏它。假设您的占位符具有id pnlMain,那么您可以通过document.getElementById(“”).style.display='none'隐藏它;在浏览器上获取占位符并用javascript隐藏它。假设您的占位符具有id pnlMain,那么您可以通过document.getElementById(“”).style.display='none'隐藏它;