我需要以下路線:ASP.NET MVC路由:與查詢字符串到一個動作,而無需到另一個
example.com/products
都到了產品類別頁面(如汽車,卡車,公交車,自行車)
控制器= Products
,動作= Categories()
example.com/products?a=1&b=2
進入的所有產品中的特定類別(例如福特,本田,雪佛蘭)
控制器的索引= Products
,動作= Index(string a, string b)
的路由僅在查詢字符串不同,它似乎是MVC忽略「?」後的任何東西。所以當然只有一條規則會被擊中 - 第一條。
如何區分這兩者?
編輯:換句話說,我想兩條路線。是否有可能在路線中使用查詢字符串還是MVC真的忽略它?有什麼辦法來破解它,或者使用某種自定義路由方案,就像我可以做自定義綁定和自定義驗證一樣?
對於不需要的URL,如果設置了&b,則可以返回正確的視圖,如果不是,則返回索引。爲什麼不區分象這樣的URL: 'example.com/products' 'example.com /產品/ A/B' 換句話說,你爲什麼要'了'和'B'是查詢參數而不是URL的一部分?如果你讓他們的URL的一部分,該路由很簡單:把複雜的路線(需要'了'和'B'第一)和不太複雜的路線秒。 – Cymen
感謝,但不是我們在做什麼,因爲你是在編碼的路由本身短暫的數據,是一種資源;這就是查詢字符串的目的,它適當地格式化數據。至於你的第一個建議,是的,我們可以把所有的東西都放在一個動作方法中,然後在那裏決定返回什麼樣的視圖 - 但是我做了我自己的路由,看起來很愚蠢,我希望框架能夠做到這一點我。 – mvcstudent
在stackoverflow上有更多關於此的討論。這可能是適當的:http://stackoverflow.com/questions/968904/asp-net-mvc-url-routing-vs-querystring – Cymen