我有一个asp.net MVC 4表单。根据用户选择的国家/地区,必须在邮政编码字段上应用不同的正则表达式验证。本质上,正则表达式模式是根据另一个控件的值动态设置的。必须在模型类中应用正则表达式的字段上的远程验证属性似乎是满足此需求的良好候选者。以下是我的代码,其中在邮政编码字段上使用Remote属性,以及在我的控制器中调用的方法。我确保案例和名称与方法的参数匹配。不知何故,远程验证从不调用此方法。
模型
[Display(Name = "Postal", ResourceType = typeof(Resources.Interface.IAddress), Order = 0)]
[Remote("ValidatePostalCode", "NewCustomer", AdditionalFields = "CountryCode")]
public string PostalCode { get; set; }
控制器
public ActionResult ValidatePostalCode(string PostalCode, string CountryCode)
{
string ukValidation = @"^[A-Za-z]{1,2}[\d]{1,2}([A-Za-z])?\s?[\d][A-Za-z]{2}$";
string usValidation = @"^\d{5}(-?\d{4})?$";
if (CountryCode.Equals("US") || CountryCode.Equals("UK"))
{
if (CountryCode.Equals("US"))
{
Regex regex = new Regex(usValidation);
if (regex.IsMatch(PostalCode))
{
return Json(true, JsonRequestBehavior.AllowGet);
}
else
{
return Json("Postal Code is in wrong format.", JsonRequestBehavior.AllowGet);
}
}
else if (CountryCode.Equals("UK"))
{
Regex regex = new Regex(ukValidation);
if (regex.IsMatch(PostalCode))
{
return Json(true, JsonRequestBehavior.AllowGet);
}
else
{
return Json("Postal Code is in wrong format.", JsonRequestBehavior.AllowGet);
}
}
}
return null;
}