Url 在 MVC-Razor 中用连字符 {replace} @ space

Url to {replace} @ space with Hyphen in MVC-Razor

我正在使用 ASP.NET 带有属性路由的 MVC Razor C#

在我的“类别”表单中单击“编辑”。它打开 Url 如下所示:

http://localhost:38812/Category/Database%20Design

我正在尝试更改 Url 如下所示

http://localhost:38812/Category/Database-Design

这里的问题是,当我去数据库搜索基于类别的详细信息时..它没有搜索,因为没有名称为 Database-Design 的类别。它以 space.

的数据库设计形式存在

有没有办法不在Url中包含Id,这样我们也可以实现下面的Url? :

http://localhost:38812/Category/Database-Design

您应该在 Category table

中创建一个额外的列 (Sanitized)

如下所示

 ID | Name            | Sanitized
---------------------------------------
  1 | Database Design | database-design
  2 | ABC-DEF_HIJ     | abc-def-hij
  3 | !Hello World!   | hello-world
  4 | happy~~feet     | happy-feet

通过这种方式,Url 和数据库查询应该使用 Sanitized

你不会担心用连字符替换什么 而且都是可定制的。

我认为你需要做的是解码 Url。您可以使用

string decodedUrl = Uri.UnescapeDataString(url)

这将替换 %20 并且 return 它恢复到原来的样子。

您可以在此处阅读更多相关信息 https://msdn.microsoft.com/en-us/library/system.uri.unescapedatastring(v=vs.110).aspx