2012-02-22 4 views
1

프로필, 페이지, 그룹 등을 구현하는 소셜 네트워킹 사이트에서 작업 중입니다.이 단계에서는 프로필 및 페이지 작업을하고 있습니다. 그들은 둘 다 사용자가 페이스 북 벽과 같이 좀 더 상태를 찍을 수있는 벽을 가지고 있습니다.asp.net 동일한 컨트롤러를 가리키는 여러 URL

컨트롤러 WallController는 두 개의 서로 다른 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 
     ); 

이제 단지 형 매개 변수를 전달하여, 나는 페이지와 프로파일에 대한 작업 링크를 얻을 수 있습니다.

모두에게 감사드립니다.

감사합니다.

관련 문제