【发布时间】:2015-09-22 07:07:11
【问题描述】:
【问题讨论】:
-
您需要编写自己的验证属性。
-
检查条目是否是有效的电子邮件地址,如果是则使用它,如果不是则检查它是否是有效的电话号码。不过,您必须采用自己的逻辑来实现这一目标。
-
感谢@stephen 我得到了这个想法并成功实施
标签: c# jquery validation asp.net-mvc-4
【问题讨论】:
标签: c# jquery validation asp.net-mvc-4
最后我实现了自定义验证,以在一个文本框中实现手机号码和电子邮件 ID 验证。
示例代码
public class customvalidation : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
string email = value.ToString();
if (Regex.IsMatch(email, @"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}", RegexOptions.IgnoreCase))
{
return ValidationResult.Success;
}
else if (Regex.IsMatch(email, @"(\d*-)?\d{10}", RegexOptions.IgnoreCase))
{
return ValidationResult.Success;
}
else
{
return new ValidationResult("Invalid EmailID or Mobile Number");
}
}
else
{
return new ValidationResult("" + validationContext.DisplayName + "is required");
}
//return base.IsValid(value, validationContext);
}
}
【讨论】:
您可以对文本框中的第一个按键事件执行类似操作,您可以检查它是以数字还是字符开头,根据结果您可以验证其电子邮件 ID 还是电话号码
$("#TextboxID").keyup(function(){
var value=$("#TextboxID").val();
//Regex for mobile number
var phoneNumber = ^[0-9]{1};
//Regex for Email Id
var Email= ^[a-zA-Z]{1};
//Now in if condition you can check whether it begins with a number or a character.
});
【讨论】:
我在流畅的验证中使用正则表达式这样做,我认为你可以这样做:
public UserLoginValidator()
{
RuleFor(user => user.EmailOrPhone).NotNull().NotEmpty().WithMessage("Bu alan boş bırakılamaz.");
RuleFor(user => user.EmailOrPhone).Must(IsValidEmailOrTelephone).WithMessage("Format geçerli değil.");
RuleFor(x => x.Password).NotNull().NotEmpty();
}
bool IsValidEmailOrTelephone(string emailOrPhone)
{
bool phone = Regex.IsMatch(emailOrPhone, @"\A(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)\Z", RegexOptions.IgnoreCase);
bool email = Regex.IsMatch(emailOrPhone, @"((\(\d{3}\) ?)|(\d{3}-))?\d{3}-\d{4}");
return phone || email;
}
【讨论】: