2012-02-22 32 views
1

我正在一個社交網站上,我們正在實施配置文件,頁面,組等。在這個階段,我們正在處理配置文件和頁面。他們都有牆壁,用戶可以放置一些地位,圖片等,更像Facebook牆。asp.net多個網址指向相同的控制器

現在可以通過兩個不同的URL訪問控制器WallController。

www.mysite.com/profile/121/some-user/wall 
and 
www.mysite.com/page/222/some-page/wall 

在頁面的左側,我加載了一些基本信息(名稱等)和一個菜單。 說

www.mysite.com/profile/121/some-user/photos 
www.mysite.com/profile/121/some-user/videos 
www.mysite.com/profile/121/some-user/songs 

這適用於(頁面和配置文件)。

這裏是我的

routes.MapRoute(
      "Page-wall", // Route name 
      "page/{id}/{name}/wall", // URL with parameters 
      new { controller = "wall", action = "details", id = "", name = "" }, 
      new { id = @"\d+" }, 
      new string[] { "PagesNameSpace.Controllers" } // Parameter defaults 
      ); 

和輪廓

 routes.MapRoute(
      "profile-wall", // Route name 
      "profile/{id}/{name}/wall", // URL with parameters 
      new { controller = "wall", action = "details", id = "", name = "" }, 
      new { id = @"\d+" }, 
      new string[] { "ProfileNameSpace.Controllers" } // Parameter defaults 
      ); 

現在的問題是,我必須確定哪些對象被訪問的URL路徑。這裏是我的WallController

public class WallController : Controller 
{ 
    public ActionResult Details(long id, string name) 
    { 

     return View(LoadWallData(id)); 
    } 

} 

我看到一個路徑值字典作爲一個解決方案,但希望看到的,什麼是這種情況的最佳解決方案。

幫助將不勝感激。

問候 成員Parminder

回答

1

我可能會做到以下幾點,你只需要添加值到您的路線:

更改您的控制器:

public class WallController : Controller 
{ 
    public ActionResult Details(long id, string name, string obj)//added param 
    { 

     return View(LoadWallData(id)); 
    } 
} 

然後你的路線:

routes.MapRoute(
      "Page-wall", // Route name 
      "page/{id}/{name}/wall", // URL with parameters 
      new { controller = "wall", action = "details", id = "", name = "", 
                /*See this>>>> */ obj="page"}, 
      new { id = @"\d+" }, 
      new string[] { "PagesNameSpace.Controllers" } // Parameter defaults 
      ); 

routes.MapRoute(
      "profile-wall", // Route name 
      "profile/{id}/{name}/wall", // URL with parameters 
      new { controller = "wall", action = "details", id = "", name = "", 
              /*See this>>>> */ obj="profile" }, 
      new { id = @"\d+" }, 
      new string[] { "ProfileNameSpace.Controllers" } 
      ); 
0

使用((System.Web.Routing.Route)(Url.RequestContext.RouteData.Route)).Url您可以從MapRoute獲取帶有參數值的網址。

0

我覺得,我會用這種方法。

public class WallController : Controller 
{ 
public ActionResult Details(string type ,long id, string name)//added param 
{ 

    return View(LoadWallData(id)); 
} 
} 

和我的路線

routes.MapRoute(
     "wall-default", // Route name 
     "{type}/{id}/{name}/wall", // URL with parameters 
     new { controller = "wall", action = "details", id = "", name = "", 
                   type="profile"}, 
     new { id = @"\d+" }, 
     new string[] { "PagesNameSpace.Controllers" } // Parameter defaults 
     ); 

現在只需通過傳遞類型參數,我就能採取行動鏈接,頁面和配置文件。

非常感謝大家。

Regards

相關問題