asp.net MVC 4 및 MVC 5에서 기본 컨트롤러를 설정하는 방법


106

ASP.NET MVC 4 프로젝트를 HomeController로 만들지 않고 기본 컨트롤러를 어떻게 설정 합니까?

응용 프로그램이 시작될 때 기본 영역을 어떻게 설정해야 합니까?


"/"에서 "/ home (루트 페이지)으로 변경됩니까?이"/ home "은 고객의 브라우저에 표시되어야합니다.
Andre Mesquita

답변:


165

가장 좋은 방법은 경로를 변경하는 것입니다. 기본 경로 (App_Start에 정의 됨) 세트/Home/Index

routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters*
        new { controller = "Home", action = "Index", 
        id = UrlParameter.Optional }
);

기본 방문 페이지로 원하는 경로로 변경할 수 있습니다.

routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters*
        new { controller = "Sales", action = "ProjectionReport", 
        id = UrlParameter.Optional }
);

13
MVC 4에서 기본 경로는 App_Start / RouteConfig.cs에 설정되어 있습니다
Eric Labashosky

매우 사실입니다. 나는이 일을 모두 프로젝트에 currenlty 작업을하고있어 간과)
데이브 Alperovich

1
Dave가 맞지만 MVC 4에서는 라우팅이 더 이상 Global.asax에서 수행되지 않고 App_Start 아래의 RouteConfig.cs 에서 수행된다는 점을 추가하고 싶습니다 .
Good Samaritan

2
기본 경로에서 참조 된 컨트롤러가 다른 영역 (즉, 루트 영역이 아님)에있을 때 어떻게 작동합니까?
superjos

당신은에 기본 경로 이동을 할 수 있어야합니다"AreaName/{controller}/{action}/{id}"
데이브 Alperovich

30

App_Start 폴더의 RouteConfig.cs 에서 아래 코드 설정

public static void RegisterRoutes(RouteCollection routes)
{
 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
 routes.MapRoute(
 name: "Default",
 url: "{controller}/{action}/{id}",
 defaults: new { controller = "Account", action = "Login", id = UrlParameter.Optional });
}

여전히 작동하지 않으면 아래 단계를 수행하십시오.

두 번째 방법 : 아래 단계를 따르십시오.

1) 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.

2) 속성 선택

3) 웹 옵션을 선택하고 특정 페이지 (컨트롤러 /보기)를 선택한 다음 로그인 페이지를 설정합니다.

여기서 계정은 내 컨트롤러이고 로그인은 내 작업 방법입니다 (계정 컨트롤러에 저장 됨).

첨부 된 여기에 이미지 설명 입력스크린 샷을 보세요 .


15
"두 번째 방법"은 웹 프로젝트를 디버깅 할 때 일어나는 일입니다. "기본 컨트롤러", 즉 사이트의 랜딩 페이지로 이동할 때 표시되는 페이지와는 관련이 없습니다.
Martin Liversage 2014 년

25

이 질문에 대한 답변을 보지 못했습니다.

응용 프로그램이 시작될 때 기본 영역을 어떻게 설정해야 합니까?

따라서 기본 영역을 설정하는 방법은 다음과 같습니다.

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

1
좋은 질문입니다. 하나로 만들어 보지 않겠습니까?
stuartdotnet 2014

'영역'이란 무엇입니까? 뷰를 정의하면 참조 된 레이아웃이로드 된 다음 뷰 데이터와 함께 별도의 HTTP 요청이로드됩니까? (즉, 별도의 Ajax 작업) 아니면 레이아웃이 렌더링되고 내 뷰를 감싸고 있습니까?
Gus Crawford

2
@GusCrawford '영역'이란 무엇입니까? 에서 msdn.microsoft.com/en-us/library/ee671793(VS.100).aspx : 대형 프로젝트를 수용하기 위해, ASP.NET MVC는 지역이라 더 작은 단위로 사용하면 파티션 웹 응용 프로그램을 할 수 있습니다. 영역은 큰 MVC 웹 응용 프로그램을 더 작은 기능 그룹으로 분리하는 방법을 제공합니다. 영역은 사실상 애플리케이션 내부의 MVC 구조입니다. 응용 프로그램에는 여러 MVC 구조 (영역)가 포함될 수 있습니다.
Amna Ali

다른 질문에 대해서는이 답변과 관련이 없다고 생각하며 원래 질문에도 관련이없는 것 같습니다. 다른 곳에 게시해야 할 수도 있습니다.
Amna Ali 2011

답장 해주셔서 감사합니다.
Gus Crawford

2

컨트롤러가 하나만 있고 루트의 모든 작업에 액세스하려면 다음과 같이 컨트롤러 이름을 건너 뛸 수 있습니다.

routes.MapRoute(
        "Default", 
        "{action}/{id}", 
        new { controller = "Home", action = "Index", 
        id = UrlParameter.Optional }
);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.