我有一個特定的路由需求,我無法工作。在StackOverflow中,我發現了很多答案,這些答案帶給我一些啓發,但不是全部。用破折號和非英文字符路由
林命名我的控制器和動作標準C#的方式,即每個單詞的第一個字母大寫:
MyController.MyAction()
爲了達到這一操作方法,我倒是像所有這些URL的工作:
/my-controller/my-action
/my-cöntroller/my-äction
/MyController/MyAction
/MyCöntroller/MyÄction
(這兩個最後的是不是超級重要,雖然...)
所以這裏有兩件事情:
- 破折號可用於分離的話(爲了可讀性和SEO 目的)。
- 可以使用一些非英文字符(所有替換 指定 - 沒有「魔術」)。
我想創建一個助手這樣的環節:即標準方式
@Html.ActionLink("My link text", "MyController", "MyAction")
,這將創建下列鏈接:
/my-controller/my-action
希望這可以在沒有完成這使得我的路由配置過於混亂(例如,對於每個動作或某事都有一條路由),或者將屬性放在所有動作方法上,但如果這是我想知道的唯一解決方案。
我到目前爲止所嘗試的是實現一個覆蓋GetRouteData()和GetVirtualPath()的自定義路由類。它讓我更接近但並不是所有的方式,但我可能會做錯的事
我有一個想法,通過在執行路由之前進行替換來解決非英文字符的問題,但是我沒有找到尚未完成的方法(see this question)。
如果有人能夠幫助我,或者至少指出我的方向正確,我會非常感激! :)
編輯:請注意,上面的示例網址只是爲了描述我想要的內容。實際上有很多網址必須被處理,所以我更喜歡一些通用的解決方案,而不是一個涉及每個動作的路徑或類似的東西。
Thanks for the答案asb,但這不適合我。我會有很多網址,並且有/無非英文字符等的組合會迫使我使用此解決方案獲得大量路線。另外,每次添加新操作時,我都必須添加新路線。我已更新我的描述以澄清此問題。 – haagel 2013-04-26 09:25:37