2012-02-22 17 views
1

私はプロファイル、ページ、グループなどを実装しているソーシャルネットワーキングサイトに取り組んでいます。この段階では、プロファイルとページを扱っています。彼らはどちらも、ユーザーがいくつかのステータス、写真などを置くことができる壁を持っています。asp.net複数のURLが同じコントローラを指している

コントローラWallControllerは、2つの異なるURLでアクセスできます。

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からパラメータ値を持つURLを取得できます。

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 
     ); 

今だけの型パラメータを渡すことによって、私はページおよびプロファイルのアクションリンクを得ることができます。

ありがとうございます。

よろしくお願いいたします。

関連する問題