Я считаю, что ValidatorEnable принимает идентификатор ASP.net, а не идентификатор клиента, созданный ASP.net. Вам также нужно будет сделать проверку условной в CodeBehind.
вот пример:
Особое использование имеет возможность включать или отключать валидаторы. Если у вас есть проверка, которую вы хотите активировать только в определенных сценариях, вам может потребоваться изменить активацию как на сервере, так и на клиенте, или вы обнаружите, что пользователь не может отправить страницу.
Вот предыдущий пример с полем, которое должно проверяться, только если флажок не установлен:
public class Conditional : Page {
public HtmlInputCheckBox chkSameAs;
public RequiredFieldValidator rfvalShipAddress;
public override void Validate() {
bool enableShip = !chkSameAs.Checked;
rfvalShipAddress.Enabled = enableShip;
base.Validate();
}
}
Вот эквивалент на стороне клиента:
<input type=checkbox runat=server id=chkSameAs
onclick="OnChangeSameAs();" >Same as Billing<br>
<script language=javascript>
function OnChangeSameAs() {
var enableShip = !event.srcElement.status;
ValidatorEnable(rfvalShipAddress, enableShip);
}
</script>
Ссылка: http://msdn.microsoft.com/en-us/library/aa479045.aspx