我如何在C#中验证localhost的URL

use*_*ser 6 c# asp.net-mvc

我在MVC中使用UrlAttribute

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

[Url(ErrorMessage = "please_enter_valid_ftp_url", ErrorMessage = null)] 
public string Url { get; set; }
Run Code Online (Sandbox Code Playgroud)

这会验证网址,但不会验证localhost网址.

我怎样才能做到这一点?

小智 5

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

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

通过使用 System.Uri 类,我们可以排除自己的正则表达式出错的机会。


小智 0

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