2012-05-29 93 views
1

我有下面的路由設置,但它不是我期待的方式。是的,我對MVC還是個新手。ASP.NET MVC 3路由多個參數不帶查詢字符串

它出來的方式就是這樣。

http://localhost:29998/Home/States?make=Chrysler 

我希望它出來的方式是這樣的

http://localhost:29998/Home/Chrysler/States 

然後,當然,一旦你在你的狀態單擊它應該是這樣的。

http://localhost:29998/Home/Chrysler/Florida 

我真的愛能夠完全從刪除「家,只是把它作爲

http://localhost:29998/Chrysler/States 

routes.MapRoute(
       "States", // Route name 
       "{controller}/{action}/{make}", // URL with parameters 
       new { controller = "Home", action = "States", Make = "" } // Parameter defaults 
      ); 
+0

好吧,如果我把這樣的網址 http:// localhost:29998/Home/States?make = Chrysler 我在回車中放置了一個斷點,我發現字符串make的值是克萊斯勒 但是如果我使用這個URL字符串make需要一個null值。 http:// localhost:29998 /首頁/國家/克萊斯勒 我確定有一些小我看過,我應該做的我只是無法想象它是什麼 – scripter78

+0

'公共ActionResult狀態(字符串製造) IEnumerable stateNames =新列表(); stateNames = _repository.GetAllDealers(); var states = from state in stateNames where state.make == make orderby state.address.city ascending select state.ToDomainDealer(); return View(states.ToList ()); } ' ' routes.MapRoute( 「國」,//路線名稱 「{控制器}/{行動}/{}做」,// URL與參數 新{控制器= 「家」,行動=「States」,make = UrlParameter.Optional} //參數默認值 );' – scripter78

+0

您是如何生成鏈接的? –

回答

0

這裏是您的解決方案:

localhost:29998/Chrysler/States 

routes.MapRoute(
       "States", // Route name 
       "{make}/{states}/", // URL with parameters 
       new { controller = "Home", action = "GetStateData", make="", states="" } 
      ); 

你應該低於其放置默認的路由方法,所以它不會拿你的控制器值。

+0

我試過了,它仍然不起作用 – scripter78

+0

它應該放置一個調試點並檢查參數值。它必須像make = home,state = index。因此,爲了避免這種情況,添加更多像「home」/ {action}/{id}這樣的路線,永遠不會對我有任何影響 –

+0

也不適合我。 –