2009-07-17 4 views
89

asp.net MVC에서 "homepage"(즉, www.foo.com을 누를 때 표시되는 경로)가 Home/Index로 설정됩니다.Asp.Net MVC에서 "Homepage"설정

  • 이 값은 어디에 저장되어 있습니까?
  • "홈페이지"는 어떻게 변경합니까?
  • 홈 컨트롤러의 색인 작업에서 RedirectToRoute()를 사용하는 것보다 더 좋은 점이 있습니까?

내 프로젝트에서 홈/색인에 대한 grepping을 시도했지만 참조를 찾을 수 없으며 IIS (6)에서 아무것도 볼 수 없습니다. 루트에서 default.aspx 페이지를 살펴 봤지만 관련성이없는 것으로 보였습니다.

감사 global.asax.cs에서

답변

133

Default.aspx/Default.aspx.cs에서 봐와 Global.asax.cs

당신이 할 수있는

 routes.MapRoute(
      "Default", // Route name 
      "",  // URL with parameters 
      new { controller = "Home", action = "Index"} // Parameter defaults 
     ); 

컨트롤러/동작 이름을 원하는 기본값으로 변경하기 만하면됩니다. 라우팅 테이블의 마지막 경로 여야합니다.

+90

를 URL과 일치하는 속성을 추가 할 수 있습니다, 이것은 당신이 그 같은 대답을 언급해야한다 App_Start/RouteConfig.cs – NikolaiDante

+6

@NikolaiDante 수행 할 수 있습니다 나는 거의 그것을 놓치고이 대답보다 빠릅니다. :) Thanks – GazB

+3

MVC 5. 폼 로그인이있는 경우 홈 페이지에서 로그인을 클릭해도 경로에 지정된 사용자 정의 컨트롤러가 아닌 홈 컨트롤러로 리디렉션됩니다. 등록 작업도 비슷한 일을 할 것입니다. 따라서 routeconfig를 변경하는 것과 별도로 RedirectionToAction ("Index", "Home")을 호출하고 컨트롤러 및 액션 이름으로 대체하는 코드를 변경해야합니다. – anIBMer

3

체크 RegisterRoutes 방법 -이 경로 구성의 기본 곳 ...

14

ASP.NET 코어

라우팅은 Startup 클래스 Configure 방법으로 구성된다. "홈페이지"를 설정하려면 다음을 추가하십시오. 이렇게하면 사용자가 사이트의 기본 URL (예 : yoursite.com은 사용자를 yoursite.com/foo/index로 라우팅 함)에 연결할 때 MapRoute 메소드에 정의 된 컨트롤러 및 작업으로 라우팅됩니다.

app.UseMvc(routes => 
{ 
    routes.MapRoute(
    name: "default", 
    template: "{controller=FooController}/{action=Index}/{id?}"); 
}); 

Pre-ASP.NET 코어

사용 RegisterRoutes의 App_Start/RouteConfig.cs 하나에있는 방법 (MVC 3 및 ​​4) 또는 Global.asax.cs (MVC 1, 2) 아래에 도시 된 바와 같이. 이것은 사용자가 경로를 사용자가 yoursite.com/foo/index하는 것이다 그들은 즉, 사이트의 기본 URL로 이동하면지도 노선의 방법에 정의 된 컨트롤러와 액션, yoursite.com로 라우팅되는 원인이됩니다

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

    // Here I have created a custom "Default" route that will route users to the "YourAction" method within the "FooController" controller. 
    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "FooController", action = "Index", id = UrlParameter.Optional } 
    ); 
} 
3
public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

     routes.MapRoute(
      name: "Default", 
      url: "{controller}/{action}/{id}",    
      defaults: new { controller = "Your Controller", action = "Your Action", id = UrlParameter.Optional } 
     ); 
    } 
} 
2

답변을 시도했지만 나에게 도움이되지 않았습니다. 이것이 제가 끝내었던 것입니다 :

새로운 컨트롤러 DefaultController를 만듭니다. RouteConfig.cs에서

return Redirect("~/Default.aspx") 

, 경로에 대한 변경 컨트롤러 = "기본"index 액션에서, 나는 한 줄의 리디렉션을 썼다.

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

이것은 리디렉션을 만들고 검색 엔진은 그런 식으로하지 않습니다 ... – oneNiceFriend

3

1 단계 : 솔루션에서 Global.asax 파일을 클릭하십시오.

2 단계 : 다음

RouteConfig.RegisterRoutes(RouteTable.Routes);

3 단계의 정의로 이동 변경 컨트롤러 이름과 뷰 이름

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

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

MVC 전에 MVC 5

에 라우팅 속성 5 routes.MapRoute(...)을 호출하여 URL을 특정 작업 및 컨트롤러에 매핑 할 수 있습니다. RouteConfig.cs 파일에서. 홈 페이지의 URL이 저장됩니다 (Home/Index). 그러나 아래와 같이 기본 경로를 수정하면

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

다른 동작 및 컨트롤러의 URL에 영향을 미칩니다. 예를 들어, 컨트롤러 클래스가 ExampleController이고 동작 방법이 DoSomething 인 경우 기본 경로가 변경 되었기 때문에 예상 기본 URL ExampleController/DoSomething이 더 이상 작동하지 않습니다.

이에 대한 해결 방법은 없습니다 기본 경로와 혼란 등과 같은 다른 행동과 컨트롤러에 대한 RouteConfig.cs 파일에 새 경로를 생성,

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

이제 ExampleController 클래스의 DoSomething 행동이 뜻입니다 URL hey/now에 매핑됩니다. 그러나이 작업은 여러 작업에 대한 경로를 정의 할 때마다 수행하기가 번거로울 수 있습니다. 그래서 MVC 5 당신이 지금과 같이 행동 MVC 4에서

public class HomeController : Controller 
{ 
    // url is now 'index/' instead of 'home/index' 
    [Route("index")] 
    public ActionResult Index() 
    { 
     return View(); 
    } 
    // url is now 'create/new' instead of 'home/create' 
    [Route("create/new")] 
    public ActionResult Create() 
    { 
     return View(); 
    } 
}