Я бы посоветовал первому решению Kyra изменить выпадающие списки так, чтобы нельзя было выбрать одно и то же значение, всегда лучше предотвратить проблемы, чем сообщить пользователю, что они сделали неправильно. Однако, если вы хотите использовать CustomValidator , будет работать следующий код:
<asp:CustomValidator ID="dropDownValidation" runat="server" OnServerValidate="dropDownValidation_ServerValidate"
ErrorMessage="The same value cannot be selected in more than one drop down." />
А затем в коде или теге скрипта.
protected void dropDownValidation_ServerValidate(object sender, ServerValidateEventArgs e)
{
e.IsValid = !haveSameValue(DropDownList1.SelectedValue, DropDownList2.SelectedValue) &&
!haveSameValue(DropDownList1.SelectedValue, DropDownList3.SelectedValue) &&
!haveSameValue(DropDownList1.SelectedValue, DropDownList4.SelectedValue) &&
!haveSameValue(DropDownList2.SelectedValue, DropDownList3.SelectedValue) &&
!haveSameValue(DropDownList2.SelectedValue, DropDownList4.SelectedValue) &&
!haveSameValue(DropDownList3.SelectedValue, DropDownList4.SelectedValue);
}
protected bool haveSameValue(string first, string second)
{
if (first != null && second != null)
{
return first.Equals(second);
}
return first == null && second == null;
}
Это, очевидно, может быть доработано, и можно использовать функцию javascript для обеспечения проверки на стороне клиента, если необходимо, используя свойство ClientValidationFunction .