MVC DataAnnotations URL验证

时间:2011-08-19 23:32:17

标签: asp.net-mvc-3 data-annotations

我正在使用ASP.NET MVC3并尝试使用DataAnnotationsExtensions验证 URL字段

这几乎是我的需要。但是,它强制用户在URL字符串的开头添加“http://”,否则,它将显示以下验证消息:

The URL field is not a valid fully-qualified http, https, or ftp URL.

在数据注释扩展程序网址demo page中,它显示了一个额外的验证程序 UrlWithoutProtocolRequired ,但我无法在任何地方找到它。

如何使用此验证器,或者如何在没有“http://”部分的情况下轻松验证URL?

3 个答案:

答案 0 :(得分:11)

DataAnnotationsExtensions的无协议选项在源代码中可用,但被视为beta或“vNext”,并且尚未作为NuGet包的一部分发布。因此,如果您下载源代码并进行编译,您将看到[Url]属性有一个重载[Url(requireProtocol:false)]。您可以在最新的UrlAttribute.cs文件(UrlArribute.cs)中看到这一点。此外,如果您查看DataAnnotationsExtensions wiki,您会看到此功能计划很快发布(我正在考虑在下一周或两周内发布官方下一版本)。

答案 1 :(得分:5)

只是为了完成这个:

由于MVC3现在我们可以使用[URL]验证属性。

[Required]
[Url]
public string Website { get; set; }

答案 2 :(得分:0)

我找不到匹配网址的内置属性,并接受协议为可选。

相反,我使用了以下RegularExpression验证器:

 int arr[] = { -12, 11, -13, -5, 6, -7, 5, -3, -6 };

int n = sizeof(arr) / sizeof(arr[0]);
 RearrangePosNeg(arr, n);

printArray(arr, n);

return 0;

我从here复制了正则表达式,这是一个很好的表达式。