我有几个场景,我需要创建:基于其他领域的条件验证,c#
1)如果下拉列表中有一个特定的值,使一个特定的文本框为必填字段。
2)如果一个特定的文本框有数据,让需要另一个文本框(如果地址字段填入,需要城市,州和邮编)
我有一些代码从一对CustomValidators的调用看起来正确:
<asp:CustomValidator ID="cvtxt_pat_id" runat="server"
OnServerValidate="txt_pat_idValidate" ControlToValidate="txt_pat_id"
ErrorMessage="Text must be 8 or more characters." Display="Dynamic"/>
protected void txt_pat_idValidate(object sender, ServerValidateEventArgs e)
{
if (ddl_addl_pat_info.SelectedValue.ToString() == "2")
{
e.IsValid = (e.Value.Length > 1);
}
else
{
e.IsValid = true;
}
}
<asp:CustomValidator ID="cvtxt_pat_id" runat="server"
OnServerValidate="addresspartsValidate" ControlToValidate="txt_city"
ErrorMessage="Complete address must be entered." Display="Dynamic"/>
protected void addresspartsValidate(object sender, ServerValidateEventArgs e)
{
if (txt_pat_address.Text.Length > 1)
{
e.IsValid = (e.Value.Length > 1);
}
else
{
e.IsValid = true;
}
}
但据我了解,如果我的测试是空的文本框,框从未验证,因此这些不火,如果他们是空白的,哪种使得它很难检查必填字段。所以...想法?
另外,关于是否需要我的测试的客户端和服务器版本,我遇到了冲突的故事。也许这是旧版本所要求的,现在不是?
我认为在JavaScript中的“EventArgs”之后会有一些代码丢失 - 我需要调用EventArgs.value。这是工作: 函数txtPat_idValidate(发件人,eventArgs){ var isValid;如果($('#ddl_addl_pat_info').val()=='2') isValid =!(eventArgs.Value ==“”|| eventArgs.Value.length <8) else isValid = true; eventArgs.IsValid = isValid; } 当然,我必须弄清楚你也在使用jQuery。 – VBartilucci 2011-04-04 16:25:09
是的,我使用jQuery库和它的选择器来通过ID获取文本框。我认为这是显而易见的,因为jQuery的语法和流行度,我的错不包括这一点。另外需要注意的是,这种方法只能用于.NET 4.0。在.NET 4.0中,您无法设置ClientIDMode,并且显示给客户端的ID(ClientID)与在后面的代码(ID)中设置的ID不同。 eventArgs后没有代码丢失。我正在检查eventArgs是否为null或有值。 示例:eventArgs = null 'var eventArgs; if(eventArgs) console.log('Has Value'); else console.log('Null');' ' – LCarter 2011-04-04 18:48:23
不错的工作,这将很方便。 – 2011-11-10 21:35:20