Url 验证属性将 `localhost` 标记为无效 Url
Url validation attribute marks `localhost` as invalid Url
在我们的 ASP.MVC 项目中,我们使用 DataAnnotations 属性进行验证。其中一个字段应包含 Url 并用 [Url]
属性标记。但是,如果我将 http://localhost:13030
放入字段值中,则它不会通过验证。
有什么方法可以使用属性将 localhost
定义为有效目标吗?
UrlAttribute
根据此处源代码中显示的 RegEx 进行验证:https://github.com/Microsoft/referencesource/blob/master/System.ComponentModel.DataAnnotations/DataAnnotations/UrlAttribute.cs#L46.
http://localhost
不匹配,因为缺少 .
.
查看其他选项的答案:How I can validate urls in C# for localhost。
编辑:根据源代码,您可以将 dataAnnotations:dataTypeAttribute:disableRegEx
添加到您的 AppSettings 并将其值设置为 true
。这将导致 UrlAttribute
验证过程 仅 检查它是否以 http://
、https://
或 ftp://
开头。请参阅同一源文件的 Line 33。
扩展 : The "dataAnnotations:dataTypeAttribute:disableRegEx"
app setting is only available since .NET Framework 4.6.1, according to dotnet pull request #668 (re-add ASPNET472CompatDoc)。
我还通过下载 .NET Framework 4.6 (58 MB .zip) and 4.6.1 RTM (59 MB .zip) 源代码和 运行 以下 git diff
命令进行了检查。
git diff D:/src/dotnet46/Source/ndp/fx/src/xsp/system/DataAnnotations/DataAnnotations/UrlAttribute.cs D:/src/dotnet461RTM/Source/ndp/fx/src/xsp/system/DataAnnotations/DataAnnotations/UrlAttribute.cs
的确,new-as-of-4.6.1 internal static class AppSettings
是读取 new-as-of-4.6.1 应用程序设置的内容。
而且......我添加这个答案的意思是我在 net452 上运气不好。
只需使用“127.0.0.1”代替 "localhost"。例如 http://127.0.0.1:13030
在我们的 ASP.MVC 项目中,我们使用 DataAnnotations 属性进行验证。其中一个字段应包含 Url 并用 [Url]
属性标记。但是,如果我将 http://localhost:13030
放入字段值中,则它不会通过验证。
有什么方法可以使用属性将 localhost
定义为有效目标吗?
UrlAttribute
根据此处源代码中显示的 RegEx 进行验证:https://github.com/Microsoft/referencesource/blob/master/System.ComponentModel.DataAnnotations/DataAnnotations/UrlAttribute.cs#L46.
http://localhost
不匹配,因为缺少 .
.
查看其他选项的答案:How I can validate urls in C# for localhost。
编辑:根据源代码,您可以将 dataAnnotations:dataTypeAttribute:disableRegEx
添加到您的 AppSettings 并将其值设置为 true
。这将导致 UrlAttribute
验证过程 仅 检查它是否以 http://
、https://
或 ftp://
开头。请参阅同一源文件的 Line 33。
扩展 "dataAnnotations:dataTypeAttribute:disableRegEx"
app setting is only available since .NET Framework 4.6.1, according to dotnet pull request #668 (re-add ASPNET472CompatDoc)。
我还通过下载 .NET Framework 4.6 (58 MB .zip) and 4.6.1 RTM (59 MB .zip) 源代码和 运行 以下 git diff
命令进行了检查。
git diff D:/src/dotnet46/Source/ndp/fx/src/xsp/system/DataAnnotations/DataAnnotations/UrlAttribute.cs D:/src/dotnet461RTM/Source/ndp/fx/src/xsp/system/DataAnnotations/DataAnnotations/UrlAttribute.cs
的确,new-as-of-4.6.1 internal static class AppSettings
是读取 new-as-of-4.6.1 应用程序设置的内容。
而且......我添加这个答案的意思是我在 net452 上运气不好。
只需使用“127.0.0.1”代替 "localhost"。例如 http://127.0.0.1:13030