我在 Python http://formencode.readthedocs.org/en/latest/modules/national.html#module-formencode.national中使用 FormEncode 。
我正在尝试为巴西添加自定义邮政编码验证器。我已经阅读了文档,但似乎都没有帮助。有谁知道如何解决这个问题?
我在 Python http://formencode.readthedocs.org/en/latest/modules/national.html#module-formencode.national中使用 FormEncode 。
我正在尝试为巴西添加自定义邮政编码验证器。我已经阅读了文档,但似乎都没有帮助。有谁知道如何解决这个问题?
如果有人想知道如何使用 FormEncode 解决这个问题,这就是我想出的解决方案
class BrazilZipValidator(validators.Regex):
messages = {
'invalid': _('Please enter a valid code (nnnnn-nnn or nnnnnnnn)')
}
regex = re.compile(r'^([0-9]{8})$|^([0-9]{5}-[0-9]{3})$')
strip = True
def _to_python(self, value, state):
self.assert_string(value, state)
match = self.regex.search(value)
if not match:
raise formencode.Invalid(self.message('invalid', state), value, \
state)
return match.group()
然后将此类附加到验证对象
national.PostalCodeInCountryFormat._vd.update({'BR': BrazilZipValidator})
模型
[checkCountry(AllowCountry = "India,USA,SriLanka", ErrorMessage = ("Please choose a valid country eg.(India,USA,SriLanka"))]
public string Country { get; set; }
在属性复制粘贴此代码,请更改命名空间名称以避免错误
using System.Linq;
namespace WebApp.Models
{
public class checkCountryAttribute : ValidationAttribute
{
public String AllowCountry { get; set; }
protected override ValidationResult IsValid(object country, ValidationContext validationContext)
{
string[] myarr = AllowCountry.ToString().Split(',');
if (myarr.Contains(country))
{
return ValidationResult.Success;
}
else
{
return new ValidationResult("Please choose a valid country eg.(India,USA,SriLanka)");
}
}
}
}
控制器:
[ValidateAntiForgeryToken]
[HttpPost]
public ActionResult Student(Student submit)
{
if (ModelState.IsValid)
{
ViewBag.Message = "Succesfully Submitted";
return View("Student");
}
return View();
}
肯定会奏效
如果此代码不起作用,请在下面评论