可以有一个人告诉我如何可以验证像http://www.abc.comasp.net的MVC dataannotation验证网址
回答
如果,你的文章的标题,你想用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;
}
}
菲尔哈克有一个很好的教程超越这一点,还包括添加代码来验证对通过jQuery客户端: http://haacked.com/archive/2009/11/19/aspnetmvc2-custom-validation.aspx
使用正则表达式数据注解的URL,并使用正则表达式,如:
http://www\.\w+\.(com|net|edu|org)
根据什么你需要验证;你是否需要http:或者你是否需要www。?所以这个是可以改变的正则表达式,如果可选,到:
(http://)?(www\.)?\w+\.(com|net|edu|org)
让的System.Uri做繁重的你,而不是RegEx:
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));
}
}
我使用的内部或外部URL这个正则表达式在我的网站。
((?:https?\:\/\/|\/.)(?:[-a-z0-9]+\.)*[-a-z0-9]+.*)
这里是督促系统中使用适当的验证属性码:
[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),可以使用UrlAttribute这包括服务器端和客户端验证:
[Url]
public string WebSiteUrl { get; set; }
当前正确答案 – 2016-09-18 14:51:21
localhost存在问题,因为它没有有第一级域名 – ASpirin 2017-08-14 14:45:34
Uri.IsWellFormedUriString检查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);
}
}
- 1. asp.net mvc DataAnnotation验证
- 2. Asp.net mvc dataannotation MaxLength验证不起作用
- 3. Aadhar使用dataAnnotation验证mvc验证
- 4. ASP.NET MVC DataAnnotation - NullTextFormat
- 5. MVC Dataannotation验证规则的集合?
- 6. ASP.NET MVC 2基于DataAnnotation的验证与LINQ2SQL冲突
- 7. asp.net mvc 2客户端验证网站的网址
- 8. ASP.NET MVC必需DataAnnotation
- 9. ASP.NET MVC 4使用DataAnnotation进行数据验证
- 10. asp.net mvc3,为什么dataannotation验证没有验证器属性?
- 11. ASP.NET MVC验证
- 12. ASP.NET MVC验证
- 13. ASP.NET MVC验证
- 14. jQuery验证 - 网址验证
- 15. 身份验证asp.net MVC 4内联网
- 16. DataAnnotation验证和自定义ModelBinder
- 17. Asp.Net MVC 2验证
- 18. ASP.NET MVC 3验证
- 19. asp.net mvc xval验证
- 20. Asp.net MVC深验证
- 21. ASP.NET MVC 3验证:禁用JavaScript时DataAnnotation属性是无用的吗?
- 22. ASP.NET MVC的SEO网址
- 23. 网址asp.net的MVC方式
- 24. 验证twitter网址
- 25. Asp.net mvc网址路由。更改网址
- 26. ASP.NET MVC的DropDownList验证
- 27. 验证ASP.NET MVC中的ViewModels
- 28. ASP.NET MVC 2验证的SelectList
- 29. ASP.NET MVC中的验证。 FluentValidationModelProvider
- 30. asp.net的MVC 1.0验证
你是什么意思'验证',验证什么?作为有效的网址?作为一个真正的,可访问的网站?验证颜色? – Lazarus 2010-06-17 12:23:53
我已经定义了模式http://www.abc.com – maztt 2010-06-18 10:21:49