我需要根据特定条件更改项目的正则表达式。
例如:我需要根据国家/地区选择更改邮政编码字段的正则表达式。
以下是我对Zip代码作为模型中的默认值,适用于美国:
[RegularExpression(@"(^\d{5}(-\d{4})?$)|(^[ABCEGHJKLMNPRSTVXY]{1}\d{1}[A-Z]{1} *\d{1}[A-Z]{1}\d{1}$)", ErrorMessage="Enter valid Zip Code")]
public string Zip { get; set; }
当国家/地区为加拿大时,我需要更改邮政编码的正则表达式:
@"^([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {1,2}[0-9][ABD-HJLN-UW-Z]{2}|GIR 0AA)$"
只有当用户登录应用程序时,我才能获得国家/地区。如何根据所选的国家/地区以编程方式更改邮政编码的正则表达式?同样,还有更多字段需要根据Country更改正则表达式。它也应该有客户端验证。请建议
答案 0 :(得分:0)
您可以在C#中编写自定义验证属性,然后在$.validator
中添加客户端验证。您可以使用this link(我认为这是关于MVC中自定义验证的非常有用的文章)
答案 1 :(得分:0)
我想我会使用RemoteValidation属性:
[Remote("IsZipValid", "SomeController", AdditionalFields = "UserCountry")]
public string Zip { get; set; }
并将用户所在国家/地区作为附加参数传递。
public JsonResult IsZipValid(
string zip,
string userCountry)
{
// Now you can get the appropriate Regex based on the user's country
// and return true / false.
}
您还提到您只有在登录后才知道用户所在国家/地区,因此您可能甚至不需要其他参数,因为服务器会知道用户能够获得该国家/地区。
当用户输入邮政编码并将其国家作为参数传递时,这将从网页发送AJAX请求。