2017-11-18 9 views
0

나는이 ASP.NET MVC에서 다음 이름을 제공가 RouteConfig 또는 컨트롤러 동작 방법에서 명명 된 경로로 리디렉션

[Route("build", Name = "Build")] 
public ActionResult Build() 
{ 
    return View(); 
} 

나는이 응용 프로그램은 더 이상 홈 페이지가있는 상황에 대한 필요가/집/Index.cshtml. 그러나 Index.cshtml을 삭제하고 싶지 않고 Build.cshtml 코드를 Index.cshtml로 옮기고 싶지 않습니다.

간단히 기본 경로를 내 빌드 경로로 지정하기 만하면됩니다. 불행하게도, 내가 응용 프로그램을 통해 장소를 사용하여 명명 된 빌드 경로, [Route("build", Name = "Build")], @Html.RouteLink("GET BUILDING", "Build") 그래서 난 다음 중 한 가지 방법으로 http://www.mywebsite.com/buildhttp://www.mywebsite.com에서 간단한 리디렉션을 할 수없는 그것을 만드는 갖는 : 내 RouteConfig에서

를이 당신이 http://wwww.mywebsite.com에 갈 때 리소스를 찾을 수없는, 작동하지 않습니다 또한

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

, 이것은 더욱 놀라운이며,이 중 하나가 작동하지 않습니다, 또한 http://wwww.mywebsite.com에 갈 때 찾을 수없는 자원 결과 :

public ActionResult Index() 
{ 
    return RedirectToRoute("Build"); 
} 

나는 그렇게처럼 내 이름 노선을 주석 :

//[Route("build", Name = "Build")] 
public ActionResult Build() 
{ 
    return View(); 
} 

그런 다음 내 RouteConfig는 위의 방법으로 작동합니다.

그것이 내가 내/홈/색인의 조치 방법

답변

0

RouteLink에서 이름이 경로로 리디렉션 할 수있는 경우에 잘 비록 내 RouteConfig에서 명명 된 경로로 리디렉션하는 것을 선호는 경로 이름이 아닌 경로를 소요 패턴/템플릿, 당신은 단순히 ""에 경로 패턴을 변경할 수 있도록 (빈 문자열) 요청이 yourSiteName.com 위해 올 때이 경로 패턴과 일치하기 때문에, 그것은, Build 액션 방법으로 처리됩니다

[Route("", Name = "Build")] 
public ActionResult Build() 
{ 
    return View(); 
} 

(바 후 아무것도 없어. eurl)

도우미 메서드 RouteLink에서 경로 이름을 사용하는 기존 코드는 모두 변경하지 않았으므로 작동합니다.

@Html.RouteLink("GET BUILDING", "Build") 

당신이 yourSiteName/Build 당신이 당신의 현재 경로 정의와 함께 경로 패턴 ""와 다른 경로를 추가 할 수 있습니다, 또한 일해야 할 경우

. 요청이 yourSiteName.com 또는 yourSiteName.com/build을 위해 올 때

[Route("")] 
[Route("build", Name = "Build")] 
public ActionResult Build() 
{ 
    return View(); 
} 

는 지금, 그것은 Build 액션 방법으로 처리됩니다