我如何在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个选项:
- 使用IP地址而不是localhost
- 在主机文件中使用有效的URL和插入条目
- 创建新的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