我有幾個場景,我需要創建:基於其他領域的條件驗證,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