在MVC-Razor中使用连字符来{替换} @空格

时间:2015-09-15 21:06:33

标签: c# asp.net-mvc-3 asp.net-mvc-4 c#-4.0

我正在使用ASP.NET MVC Razor C#with Attribute Routes

单击“编辑”时,在“类别”表单中。它打开了如下所示的URL:

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

我正在尝试更改下面的网址

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

问题在于,当我去数据库搜索基于类别的详细信息时......由于没有名称为Database-Design的类别,因此不进行搜索。它以空间数据库设计的形式存在。

有没有办法不在网址中加入ID,所以我们也可以实现以下网址? :

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

2 个答案:

答案 0 :(得分:2)

您应该在Sanitized

中创建一个额外的列(Category

如下所示

 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

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

答案 1 :(得分:0)

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

执行此操作
string decodedUrl = Uri.UnescapeDataString(url)

这将取代%20并将其恢复原来的状态。

您可以在https://msdn.microsoft.com/en-us/library/system.uri.unescapedatastring(v=vs.110).aspx

了解更多相关信息