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

标签 asp.net-mvc razor data-annotations w3c-validation

在我的博客中,我将 URI 存储在实体上以允许它们被定制(和友好)。最初,它们可以包含空格(例如“/tags/ASP.NET MVC”),但 W3C 验证表明空格无效。
System.Uri class 需要空格,并且似乎按照我的意愿对它们进行编码(例如 /tags/ASP.NET MVC 变成 /tags/ASP.NET%20MVC ),但我不想创建一个 Uri直接扔了,感觉脏!

注意:Html.Encode都没有, Html.AttributeEncodeUrl.Encode将编码 "/tags/ASP.NET MVC""/tags/ASP.NET%20MVC" .

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

最佳答案

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

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

我认为使用它们的最佳方法是将 %20 存储在 DB 中,因为空间是“不安全的”,然后以通过 .NET 中的 W3C 验证器的方式对它们进行编码似乎很重要。

关于asp.net-mvc - 我应该在数据库中的 URL 中存储空格吗?如果是这样,将它们放入 <a href ="..."> 时如何对它们进行编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6008007/

相关文章:

javascript - 使用 Razor 设置 javascript 变量

asp.net - Html.RouteLink 到 Web API 路由 - 可能吗?

c# - 关于将内容放在ASP.NET MVC中的位置有些困惑

c# - 使用 ASP.NET MVC 在 View 的 EditorFor() 方法中显示 ViewBag 的值

c# - 如何自动将占位符属性添加到 mvc 4 中的 html 输入类型编号?

javascript - .Net Core 中的自定义属性未显示验证消息

c# - 在代码中添加和删除数据注释

asp.net - web.config 中的静态值

asp.net-mvc - ASP.NET MVC - 在子目录中运行

javascript - 通过 JavaScript 填充时 Bootstrap 双列表框问题