我在MVC中使用UrlAttribute
但它不接受localhost网址,例如http://localhost/GCWeb
[Url(ErrorMessage = "please_enter_valid_ftp_url", ErrorMessage = null)]
public string Url { get; set; }
这会验证网址,但不会验证localhost网址。
我该怎么做?
答案 0 :(得分:4)
我还建议创建一个自定义验证器属性类。但是我想使用System.Uri类来验证而不是自定义的个人正则表达式。
iex(1)> Code.ensure_loaded?(MyApp.Repo)
true
iex(2)> Code.ensure_loaded?(MyAppppppppp.Reeeeppo)
false
通过使用System.Uri类,我们可以为自己的正则表达式留下错误的可能性。
答案 1 :(得分:0)
您可以使用127.0.0.1: portNumber 。也许这有帮助。
答案 2 :(得分:0)
关于URLAttribute code,您有3个选项:
答案 3 :(得分:0)
如果我说得对,你可以使用自定义ValidationAttribute。在Models名称空间
中添加此类public class UrlValidator : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
var x = value.ToString();
if (Regex.IsMatch(x, @"^http:\/\/\w+(\.\w+)*(:[0-9]+)?\/?(\/[.\w]*)*$", RegexOptions.IgnoreCase))
{
return ValidationResult.Success;
}
else
{
return new ValidationResult(ErrorMessage);
}
}
else
{
return new ValidationResult("Please enter some value");
}
}
}
并像
一样使用它[UrlValidator(ErrorMessage = "please_enter_valid_ftp_url")]
public string Url { get; set; }
当然,您可以修改正则表达式以满足您的要求。我在这个特定示例中使用的那个对于像
这样的地址是有效的http://example
http://example.com
http://127.0.0.1