我使用 Remote 对农场模型进行数据验证并检查省代码我不断收到不接受两个字符的错误。我需要省代码为 2 个字母长并检查它们是否真的字母。这是 RemoteController 的代码:
public JsonResult provinceCodeCheck(string provinceCode)
{
Regex justLetters = new Regex("^[A-Z]$");
provinceCode.ToUpper();
var provinceCodes = db.provinces.Find(provinceCode);
if (provinceCode.Length != 2)
{
return Json("The Province must be 2 letters long",
JsonRequestBehavior.AllowGet);
}
else if (!justLetters.Equals(provinceCode))
{
return Json("The Province is not letters",
JsonRequestBehavior.AllowGet);
}
else if (provinceCodes == null)
{
return Json("The Province is not supported, sorry for the inconvenience",
JsonRequestBehavior.AllowGet);
}
else
{
return Json(true, JsonRequestBehavior.AllowGet);
}
}
请您参考如下方法:
您的代码有几个问题:
provinceCode.ToUpper()不会改变provinceCode的值。您需要为其分配provinceCode = provinceCode.ToUpper()!justLetters.Equals(provinceCode)正在检查Regex是否等于字符串provinceCode。您需要使用 Regex.IsMatch() :if (!justLetters.IsMatch(provinceCode))最后(感谢这里的 Carnivorus)您的
Regex只查找一个大写字母。如果您更改正则表达式,则可以将前两个 if 语句合并为一个:var justLetters = new Regex("^[A-Z]{2}$");
正如对您的代码的一般小改进一样,您不需要在此处使用 elseif,因为无论如何您都在 if 语句中返回。
