2016-09-26 3 views
1

나는 내 HomeController에 다음과 같습니다MVC 경로 구성

http://localhost:50499/Home/Share/SomeTextHere

내가 routeconfig 파일에 이런 식으로 경로를 구성 :

public ActionResult Share(string id) 
{ 
    Debate debate; 
    try 
    { 
     debate = Db.Debates.Single(deb => deb.ShareText.Equals(id)); 
    } 
    catch (Exception) 
    { 
     return RedirectToAction("Index"); 
    } 
    return View(debate); 
} 

이 날 이런 식으로 URL을 호출 할 수 있습니다 :

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     name: "Share", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Share", id = UrlParameter.Optional } 
    ); 

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
} 

나는 U를 부를 수있는 방법이되고 싶다. RL이 방법 : 나는 운없이이 고민 한

http://localhost:50499/Debate/SomeTextHere

. 그것을 달성하는 가장 좋은 방법은 무엇입니까?

+2

URL에서 컨트롤러 및 작업 이름을 제거 할 수 없습니다. 경로는 어떤 방식 으로든 구별 할 수 있어야합니다. '.../Share/SomeTextHere'에 대한 경로를 만들 수 있습니다. –

+2

표시 한 경로는 모두 동일합니다. 두 경로 모두 2 개의 세그먼트가 포함 된 임의의 URL과 선택적인 세 번째 세그먼트가 일치합니다. 당신의 2 번째 루트는 절대 치지 않을 수 있습니다. (아마도 1 번째를 삭제할 수도 있습니다) –

+0

@StephenMuecke URL을 http : // localhost : 50499/Debate/SomeText로 바 꾸었습니다 이것이 가능합니까? – MRFerocius

답변

2

@StephenMuecke의 의견에서 언급했듯이 경로를 변경하여 매우 일반적이지 않게해야합니다.

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     name: "Share", 
     url: "Debate/{id}", 
     defaults: new { controller = "Home", action = "Share", id = UrlParameter.Optional } 
    ); 

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
} 

Share 경로는 이제 적절한 컨트롤러 액션에 경로에 http://localhost:50499/Debate/SomeTextHere을 허용합니다.

+0

고마워요! – MRFerocius

+0

OP는 단지'../ Debate/xx'를 원한다고 생각합니다.'url : "Debate/{id}",' –

+0

@Stephen 당신이 맞습니다. 나는 그 요구 사항을 잘못 읽었다. 감사 – Nkosi