Asp.net mvc asp.net mvc数据批注验证url
有人能告诉我如何验证url(如使用正则表达式数据注释)和正则表达式(如:Asp.net mvc asp.net mvc数据批注验证url,asp.net-mvc,Asp.net Mvc,有人能告诉我如何验证url(如使用正则表达式数据注释)和正则表达式(如: http://www\.\w+\.(com|net|edu|org) 根据您需要验证的内容;您需要http:还是需要www。?这样可以将正则表达式(如果可选)更改为: (http://)?(www\.)?\w+\.(com|net|edu|org) 如果根据文章的标题,希望使用MVC DataAnnotations验证url字符串,则可以编写自定义验证程序: public class UrlAttribute : Va
http://www\.\w+\.(com|net|edu|org)
根据您需要验证的内容;您需要http:还是需要www。?这样可以将正则表达式(如果可选)更改为:
(http://)?(www\.)?\w+\.(com|net|edu|org)
如果根据文章的标题,希望使用MVC DataAnnotations验证url字符串,则可以编写自定义验证程序:
public class UrlAttribute : ValidationAttribute
{
public UrlAttribute() { }
public override bool IsValid(object value)
{
//may want more here for https, etc
Regex regex = new Regex(@"(http://)?(www\.)?\w+\.(com|net|edu|org)");
if (value == null) return false;
if (!regex.IsMatch(value.ToString())) return false;
return true;
}
}
Phil Haack有一个很好的教程,它超越了这一点,还包括添加代码以通过jQuery在客户端进行验证:
让System.Uri代替正则表达式为您完成繁重的工作:
public class UrlAttribute : ValidationAttribute
{
public UrlAttribute()
{
}
public override bool IsValid(object value)
{
var text = value as string;
Uri uri;
return (!string.IsNullOrWhiteSpace(text) && Uri.TryCreate(text, UriKind.Absolute, out uri ));
}
}
如果您使用的是MVC3 RTM,那么只需使用[URL]验证属性即可
请参阅我将此正则表达式用于网站上的内部或外部URL
((?:https?\:\/\/|\/.)(?:[-a-z0-9]+\.)*[-a-z0-9]+.*)
以下是prod系统中使用的正确验证属性代码:
[AttributeUsage(AttributeTargets.Property, AllowMultiple = false)]
public class UriValidation : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null || value.ToString() == string.Empty)
{
return true;
}
try
{
Uri result;
if (Uri.TryCreate(value.ToString(), UriKind.RelativeOrAbsolute, out result))
{
if (result.Scheme.StartsWith("http") || result.Scheme.StartsWith("https"))
{
return true;
}
}
}
catch
{
return false;
}
return false;
}
}
现在(至少在ASP.NET MVC 5中)可以使用URLDATTRIBUTE,其中包括服务器和客户端验证:
[Url]
public string WebSiteUrl { get; set; }
检查URL格式是否正确,并且不需要转义
/// <summary>
/// Ensures the property is a valid URL.
/// </summary>
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter, AllowMultiple = false)]
public class ValidateUrlAttribute : ValidationAttribute
{
public ValidateUrlAttribute()
{
}
public override bool IsValid(object value)
{
// Do not validate missing URLs - people can use [Required] for that.
string text = (value as string) ?? "";
if (text == "")
return true;
return Uri.IsWellFormedUriString(text, UriKind.Absolute);
}
}
//
///确保属性是有效的URL。
///
[AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter,AllowMultiple=false)]
公共类ValidateUrLatAttribute:ValidationAttribute
{
公共验证EurlatAttribute()
{
}
公共覆盖布尔值有效(对象值)
{
//不要验证丢失的URL-人们可以使用[Required]进行验证。
字符串文本=(值为字符串)??“”;
如果(文本==“”)
返回true;
返回Uri.IsWellFormedUriString(text,UriKind.Absolute);
}
}
使用URL属性怎么样,比如:
public class ProveedorMetadata
{
[Url()]
[Display(Name = "Web Site")]
public string SitioWeb { get; set; }
}
“验证”是什么意思,验证什么?作为有效的URL?作为一个真正的、可访问的网站?验证颜色?我已经定义了模式+1,非常感谢有助于链接到这篇好文章的链接。,:)localhost有一个问题,因为它没有一级域名,我也这么认为。这仅适用于HTTP、HTTPS和FTP。如果您需要其他URL,如mailto或file!-你完蛋了,这对微软来说很正常。