Я знаю, что на это ответили давно, и это лучший набор ответов среди других дублирующих вопросов. Вот альтернатива, использующая CustomValidator, когда действительно нужна нечувствительность к регистру на стороне сервера и на стороне клиента; и подход верхний / нижний [A-Za-z] чар слишком велик.
Это смешивает различные другие ответы, используя серверный объект RegEx и синтаксис javascript на стороне клиента.
CustomValidator:
<asp:CustomValidator ID="cvWeight" runat="server" ControlToValidate="txtWeight"
OnServerValidate="cvWeight_Validate" ClientValidationFunction="cvWeight_Validate"
ValidateEmptyText="true" Text="*" ErrorMessage="Invalid entry." />
Код позади:
protected void cvWeight_Validate(object sender, ServerValidateEventArgs args)
{
Regex re = new Regex(@"^[0-9]*\s*(lbs|kg|kgs)$", RegexOptions.IgnoreCase);
args.IsValid = re.IsMatch(args.Value);
}
Функция проверки на стороне клиента:
function cvWeight_Validate(sender, args) {
var reWeight = /^[0-9]*\s*(lbs|kg|kgs)$/i;
args.IsValid = reWeight.test(args);
}
Это работает нормально для меня, за исключением случаев использования ValidationSummary. При проверке на стороне клиента отображается ошибка *
, но я не могу отобразить сообщение об ошибке в сводке. Сводка отображается только при отправке. Я думаю, что это должно показать; У меня есть набор панелей обновления и устаревшего кода, которые могут быть проблемами.