2015-06-21 83 views
0

我想有兩條路線,例如路由:Asp.net mvc。用斜線

http://localhost:1227/Product

http://localhost:1227/Category/

斜槓是唯一的區別。

在第一種情況下,我想在其他情況下顯示關於產品的信息。 「產品」和「類別」是某些產品或類別的名稱

是否可以實施?

我的方法:

路線:

routes.MapRoute("category route", "{name2}", new { controller = "test", action = "GoToView2" }, new { name2 = ".*/?" }); 
routes.MapRoute("product route", "{name}", new { controller = "test", action = "GoToView1"}); 

控制器:

public class TestController : Controller 
    { 
     // 
     // GET: /Test/ 
     public ActionResult Index() 
     { 
      return View(); 
     } 

     public ActionResult GoToView1(string name) 
     { 
      // call to db to get some information about product 
      return View((object) name); 
     } 

     public ActionResult GoToView2(string name2) 
     { 
      // call to db to get some information about category 
      return View((object)name2); 
     } 
    } 

索引視圖:

......

<br/> 
<a href="@Url.Action("GoToView1", new { name = "Prouct"})">Show proudct</a> 
<br/> 
<a href="@Url.Action("GoToView2", new { name2 = "Category" + "/" })">Show category</a> 

......

但我看到只有「GoToView2」被稱爲兩個鏈接。

任何想法如何解決它?

謝謝,

回答

0

爲什麼要這樣做呢?在你的情況下,你必須有完全不同的控制器,即ProductCategory以及兩種不同的動作,即使我們可以實現相同的URL來調用基於斜槓的不同動作,這將是一種代碼異味(糟糕的設計),在你的情況下你可以簡單地撥打TestController/GoToView1TestController/GoToView2,如果情況並非如此,請告訴我們你正在努力解決什麼問題,也許會有更好的方法。