可以有一個人告訴我如何可以驗證像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