2010-08-24 123 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