所以,我有兩個網址,我需要不同的途徑爲:基於兩個URL
/find-your-new-home/155-detroit/1234-some-value
和
/find-your-new-home/155-detroit/5555g-some-other-flipping-value
我有地方處理#1路線:
routes.MapRoute(
"FindYourNewHomeCommunity",
"find-your-new-home/{market}/{community}.html",
new { controller = "Community", action = "Detail" }
);
我有一個分割「155」,從「底特律」的「詳細信息」方法的動作過濾器,也分裂「1234」,從「一些翻轉的價值」的d只是將ID傳遞給action方法(id的都是重要的,文本值是無關緊要的)。
現在,第二條路線幾乎完全相同,除了「5555」值之後有一個「g」。這個「g」表示它應該在社區控制器上調用另一個操作方法(「CommunityGroup」)。
我的問題是:我如何配置兩條路線分別處理這些?我想:
routes.MapRoute(
"FindYourNewHomeCommunityGroup",
"find-your-new-home/{market}/{communityId}g-{community}.html",
new { controller = "Community", action = "CommunityGroup" }
);
這並不工作,但是,有兩個原因:
1)這兩個網址最後兩條路線相匹配菲爾哈克的RouteDebugger作爲證明。
2)由於貪婪匹配(這就是爲什麼我在示例URL中使用文本「翻轉值」),communityId最終包含「5555-some-other-flippin」,因爲它與最後一次匹配URL中的「g-」,恰好在「翻轉值」文本中。
所以我的問題是,我如何獲得不同的操作方法來觸發這些URL?
編輯:只是爲了澄清,這些URL是由我正在工作的一些其他約束和預先定義,無法更改。他們必須遵循這種格式。
你可以實現你自己的路由處理程序,避免貪婪的匹配。我沒有代碼示例,因爲我只是離開辦公室,但如果沒有人回覆,我會盡量在今晚掏出一些東西。 – Basic 2011-02-24 21:14:24