客户验证ASP.NETC#
我和这个论坛上的其他人有同样的问题。我的验证控制没有启动…也不确定我哪里出错了。请有人看一下,让我知道我这里有什么明显的错误…谢谢 我已在我的aspx页面中使用以下内容设置了客户验证程序:客户验证ASP.NETC#,c#,asp.net,C#,Asp.net,我和这个论坛上的其他人有同样的问题。我的验证控制没有启动…也不确定我哪里出错了。请有人看一下,让我知道我这里有什么明显的错误…谢谢 我已在我的aspx页面中使用以下内容设置了客户验证程序: <asp:TextBox ID="EmployeeNumber2TextBox" runat="server" Text='<%# Bind("EmployeeNumber") %>'Visible='<%# AllowEmployeeNumberEdit() %>
<asp:TextBox ID="EmployeeNumber2TextBox" runat="server"
Text='<%# Bind("EmployeeNumber") %>'Visible='<%# AllowEmployeeNumberEdit() %>' />
<asp:CustomValidator ID="ValidateEmpNumber" runat="server"
onservervalidate="ValidateEmpNumber_ServerValidate"
controltovalidate="EmployeeNumber2TextBox"
ErrorMessage="You Must Enter an Employee Number" Text="*" />
验证程序是否与执行提交/回发的控件同步?此外,没有任何条件允许它为
true
你怎么知道它没有启动?你有没有试着让OnServerValidate和ControlToValidate使用每个单词大写的第一个字母?这些属性可能区分大小写 我可以在我的系统上运行你的代码的精简版本 您确定您的Web.config已设置为编译调试吗?:
是代码根本没有运行,还是只是没有验证?为了安全起见,您可以显示正在执行提交的控件标记吗?我在方法上设置了一个中断,但它从未到达…当字段留空时,我从数据库收到一条错误消息。听起来您的程序正在中断。在方法的第一行设置断点:
int SiteCompanyID=System.Convert.ToInt32(会话[“SiteCompanyID]”)
并查看它是否命中,您的方法没有从文本框中获取文本。它似乎与验证输入无关,除非它位于GetCompanyById()
。只是想一想,试着用默认值替换
值,看看如果其他方法都不起作用的话,这是否有用。我不确定问题出在哪里,但我不认为在这一点上它是在代码背后…验证方法根本没有被调用…我已经在方法的开始设置了一个断点,它从来没有击中它…这个验证控件在表单视图的插入模板中。谢谢,我会继续努力的。@Steve嗯,这改变了一切。你介意在文本框和验证器周围张贴代码吗?formview代码?是的……我刚刚测试过,结果没有改变。这可能与您的问题无关,但我注意到,绑定引号和“Visible=”之间没有空格。Visible前面应该有一个空格。它只是以这种方式复制过来的…它实际上是在一个单独的行上,但是谢谢你,请参见上面的编辑。在我的测试中,我删除了数据绑定,并对输入元素中的一些值进行了硬编码。好的……我在另一个关于同一问题的查询的帮助下找到了问题的答案。首先,因为我的测试是查看textbox是否为空,所以我需要添加并指定一个“ValidateEmptyText”属性为true。显然,如果文本框为空,它将不会激发,除非您添加此属性。其次,我没有将sumbit按钮上的“CausesValidation”更改为=“True”,因此我对这一疏忽表示歉意。感谢所有的帮助,我希望这能在将来帮助别人。
protected void ValidateEmpNumber_ServerValidate(object sender, System.Web.UI.WebControls.ServerValidateEventArgs e)
{
int SiteCompanyID = System.Convert.ToInt32(Session["SiteCompanyID"]);
SiteCompanyBLL SiteCompany = new SiteCompanyBLL();
SiteCompanyDAL.SiteCompanyRow ScRow = SiteCompany.GetCompanyByID(SiteCompanyID);
bool AutoGenerate = ScRow.AutoGenNumber; // result returning true or false
if (AutoGenerate == false)
{
if (e.Value.Length == 0)
e.IsValid = false;
else
e.IsValid = false;
}
}