我应该在数据库中的URL中存储空格吗?如果是这样,在将它们放入<a href="...">时,如何对它们进行编码?

Dan*_*eny 5 asp.net-mvc w3c-validation data-annotations razor

在我的博客中,我将URI存储在实体上以允许它们被定制(和友好).最初,它们可以包含空格(例如"/tags/ASP.NET MVC"),但W3C验证表明空格无效.

这个System.Uri类需要空格,并且似乎按照我想要的方式对它们进行编码(例如/tags/ASP.NET MVC变成/tags/ASP.NET%20MVC),但是我不想创建一个Uri只是扔掉它,这感觉很脏!

注意:没有Html.Encode,Html.AttributeEncode并且Url.Encode将编码"/tags/ASP.NET MVC""/tags/ASP.NET%20MVC".


编辑:我编辑了DataType我的问题部分,因为事实证明DataType没有直接提供任何验证,并且没有内置的URI验证.我在dataannotationsextensions.org上找到了一些额外的验证器,但它只支持绝对URI,它看起来像空格我也有效.

Dan*_*eny 2

似乎唯一明智的做法是不允许 URL 中包含空格。在 .NET 中,对它们正确编码的支持似乎很不稳定:(

当我自动生成它们时,我将用破折号替换空格,并验证它们仅包含某些字符(字母数字、点、破折号、斜杠)。

我认为使用它们的最佳方法是将 %20 存储在数据库中,因为该空间是“不安全的”,并且以能够通过 .NET 中的 W3C 验证器的方式对它们进行编码似乎并不简单。