我如何在C#中validationlocalhost的URL

我在MVC中使用UrlAttribute

但它不接受localhosturl,例如http:// localhost / GCWeb

[Url(ErrorMessage = "please_enter_valid_ftp_url", ErrorMessage = null)] public string Url { get; set; } 

这会validationurl,但不会validationlocalhosturl。

我怎样才能做到这一点?

我还建议创建一个自定义validation器属性类。 但我想使用System.Uri类来validation而不是自定义的个人正则表达式。

 public class UriAttribute: ValidationAttribute { protected override ValidationResult IsValid(object value, ValidationContext validationContext) { Uri uri; bool valid = Uri.TryCreate(Convert.ToString(value), UriKind.Absolute, out uri); if (!valid) { return new ValidationResult(ErrorMessage); } return ValidationResult.Success; } } 

通过使用System.Uri类,我们可以为自己的正则表达式遗漏错误的机会。

您可以使用127.0.0.1:portNumber。 也许这有帮助。

关于URLAttribute代码,您有3个选项:

  1. 使用IP地址而不是localhost
  2. 在主机文件中使用有效的URL和插入条目
  3. 创建新的URLAttribute扩展并忽略那里的Localhost

如果我找到了你,你可以使用自定义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