我最近answered a similar question處理1字段。您應該能夠擴展它以檢查各種選擇,然後檢查相關字段是否已填寫。
驗證可以更新這樣的:
bool isValid = true;
switch (dropdown.SelectedValue)
{
case "Option1":
// check fields for Option1
break;
case "Option2":
// check fields for Option2
break;
default:
isValid = true;
}
args.IsValid = isValid;
你的下一個問題可能是,「?我怎麼指明哪些字段是無效的用戶」有幾種不同的可能性。
如果這些字段在您的用戶界面上可視化地分組在一起,那麼您可以更新CustomValidator的ErrorMessage來聲明「XYZ字段是必需的」。但是,如果它們不是,或者如果您希望爲每個無效字段提供消息,則可以添加RequiredFieldValidator(或根據特定字段的需要進行的其他驗證)並使用適當的消息,並設置屬性(如果不是)如果將它們分組是有意義的),那麼基於選擇,基於下拉選擇驗證該特定組。
如果不同的字段可以與不同的下拉選項關聯,那麼驗證組的想法將不可行。相反,您可能會禁用每個字段的RequiredFieldValidator,爲每個字段的驗證器維護一個列表,並且在switch語句中,您可以遍歷它們,啓用它們,對其調用IsValid(將值存儲在bool和AND結果),然後使用CustomValidator的args.IsValid屬性的最終布爾結果。 AND'ing結果的一個例子可以在my reply to another question中看到。
如果您沒有正確調試它,那麼這種方法會變得非常棘手並且感覺被黑掉,因爲您需要知道所有的啓用/禁用功能,否則您可能會發現無法提交頁面當一切在屏幕上都顯示有效時,但實際上當你在交換機之前的每次呼叫中應該禁用所有驗證器時,啓用了某些功能,然後啓用所需的功能。
這是您在客戶端或服務器端進行的驗證嗎?在其他wodrs中,DropDownList的AutoPostBack屬性是否設置爲true? – 2009-09-14 15:49:25