2010-08-24 137 views
0

我有一个路线在我的asp.net mvc的2个网站,看起来像这样路由问题与 - 变量

routes.MapRoute(
       "media_display", 
       "Media/{mediaId}-{mediaName}", 
       new { controller = "Media", action = "Display" }, 
       new { mediaId = @"\d+" } 
      ); 

哪里mediaId是id和MEDIANAME是媒体的标题。 一个例子

www.example.com/Media/1-test-media-list

其中ID为1,名称为 “试验介质列表”,这里的问题是我用 - 取代了空间,并且破坏了我的路线。

我只是不知道如何使这个“mediaName”可以包含一个 - 。

我也有以下rute,但解决方案应该是相同的。

routes.MapRoute(
       "media_display", 
       "Media/{mediaId}-{mediaName}/edit", 
       new { controller = "Media", action = "Edit" }, 
       new { mediaId = @"\d+" } 
      ); 

也有可能使这将捕获所有的以下3个exampels的路线,现在做的,我只是有3条不同的路线,但我想削减下来。

www.example.com/Media/1-test-media-list

www.example.com/Media/1-

www.example.com/Media/1

回答

1

做到了这一点,我认为更elega nt和更简单的解决方案有www.example.com/Media/1/test-media-list

如果您坚持您的网址的例子,让这样的路线:在this blog post描述解析无论你从蛞蝓需要为你的行动参数的ID,名称或

routes.MapRoute(
       "media_display", 
       "Media/{slug}", 
       new { controller = "Media", action = "Display" }, 
      ); 

和使用的技术。

+0

我会说,www.example.com/Media/1-test-media-list是最优雅的:D slu sul sul,,会打破网址的制作,我使用Html.Action(“Display”, “Media”,new {mediaId = 1,mediaName =“Some Name”}); 但是,如果没有人能够帮助我使用{mediaId} - {mediaName} sulotion,我将使用{mediaId}/{mediaName} – Androme 2010-08-25 12:16:40

+0

我曾经有一个属性在我的视图模型中返回生成的slu when 。然后你会有Html.Action(“Display”,“Media”,新的{slug = Model.MediaSlug})。但我仍然认为/ id/name更好。看!即使是SO使用它;) – Necros 2010-08-25 14:18:10

+0

我已经使用了/ ID /名称解决方案 – Androme 2010-09-01 16:05:33