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? :
您应该在 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
我正在使用 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? :
您应该在 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