2013-08-05 96 views
0

我有我的web應用程序的一些鏈接,看起來像這樣:麻煩與Global.asax的路由

localhost:12345/?something=1 
localhost:12345/?something=2 
localhost:12345/?something=3 
localhost:12345/?something=4 

末每個數字是,我需要傳遞給我的控制器,以顯示與此相關的信息的ID 。

我知道我需要在我的global.asax頁面中創建一個新的routes.MapRoute,但我並不十分確定如何去做。我嘗試這樣做:

routes.MapRoute(
    "Id", // Route name 
    "{controller}/{action}/{*Id}", // URL with parameters 
    new { controller = "Home", action = "Id", Id = "" } // Parameter defaults 
); 

---編輯---

我只成功獲得每一個人喜歡做顯示如下:

routes.MapRoute(
    "IdRoute", // Route name 
    "{Id}", // URL with parameters 
    new { controller = "Home", action = "Index", id = 1 } // Parameter defaults 
); 

這並不工作,但是,這隻適用於一個id(特別是1)。我不太清楚如何去了解這一點,但我需要我需要:

localhost:12345/?something=1 

以顯示ID爲1的信息,

localhost:12345/?something=2 

以顯示ID 2的信息,

localhost:12345/?something=3 

以顯示ID 3.

我也將是數以百計的IDS這麼硬編碼的東西我的信息n不會是一個方便的選擇。到目前爲止我沒有運氣。任何幫助將非常感激!謝謝!

回答

0
 routes.MapRouteWithName(
      "RootName", 
      "{id}", 
      new { controller = "Home", action = "Index", id = 1 }); 

這將產生像這樣的鏈接本地主機/ 1 如果你想這樣的鏈接本地主機/ ID = 1 則:

 routes.MapRouteWithName(
      "RootName", 
      String.Empty, 
      new { controller = "Home", action = "Index"}); 


public ActionResult Index(int id) 
    { 
     //do something with id, make query to database whatever 

     // u usually have model class so you would fill model with your data 
     var model = new YourModel(); 
     //... 
     return View("Index", model); 
    } 
+0

感謝您的回覆。這似乎是半工作。你的代碼唯一的問題是,你只有它的第一個ID工作。您是否知道我能夠通過任何ID的方式?將會有數百個ID,並且每次都要編寫它會是一件痛苦的事情。 – scapegoat17

+0

嗯,你想要一個Id是一個動作,嗯嗯,你爲什麼不使用一個動作,並傳遞id作爲該動作的參數。 –

+0

這就是這條路線正在做的事情。 –

0

如果你有以下的,比如說,HomeController的行動:

public ActionResult SomeAction(int Id) 
    { 
     return View() 
    } 

您可以使用任何下列途徑:

//* For Id = 3 this will return path "Home/SomeAction/3" 
routes.MapRoute(
       name: "First", 
       url: "{controller}/{action}/{Id}", 
       defaults: new { controller = "Home", action = "SomeAction", Id= UrlParameter.Optional} 
      ); 


//* For Id = 3 this will return path "SomeAction/3" 
routes.MapRoute(
       name: "First", 
       url: "{action}/{Id}", 
       defaults: new { controller = "Home", action = "SomeAction", Id= UrlParameter.Optional} 
      ); 

//* For Id = 3 this will return path "Home/SomeAction(3)" 
routes.MapRoute(
       name: "First", 
       url: "{controller}/{action}({Id})", 
       defaults: new { controller = "Home", action = "SomeAction", Id= UrlParameter.Optional} 
      ); 


//* For Id = 3 this will return path "LadyGaga/SomeAction/3" 
routes.MapRoute(
       name: "First", 
       url: "LadyGaga/{action}/{Id}", 
       defaults: new { controller = "Home", action = "SomeAction", Id= UrlParameter.Optional} 
      );