在我们的ASP.MVC项目中,我们使用DataAnnotations属性进行验证。其中一个字段应包含Url,并标有[Url]
属性。但是,如果我将http://localhost:13030
放入字段值,则不会通过验证。
有没有办法使用该属性将localhost
定义为有效目标?
答案 0 :(得分:1)
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。
答案 1 :(得分:1)
展开Kirk Larkin's answer:根据dotnet pull request #668 (re-add ASPNET472CompatDoc),"dataAnnotations:dataTypeAttribute:disableRegEx"
应用设置仅在.NET Framework 4.6.1之后可用。
我还通过下载.NET Framework 4.6 (58 MB .zip)和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
实际上,新版本的4.6.1 internal static class AppSettings
就是读取新的4.6.1应用程序设置。
而且......我补充这个答案的意思是我在net452上运气不好。
答案 2 :(得分:0)
只需使用“ 127.0.0.1”代替“ localhost”即可。例如http://127.0.0.1:13030