[c#] Asp.Net MVC에서 “홈페이지”설정

asp.net MVC에서 “홈페이지”(예 : www.foo.com을 누를 때 표시되는 경로)는 Home / Index로 설정됩니다.

  • 이 값은 어디에 저장됩니까?
  • “홈페이지”는 어떻게 변경합니까?
  • 홈 컨트롤러의 Index 작업에서 RedirectToRoute ()를 사용하는 것보다 더 우아한 것이 있습니까?

내 프로젝트에서 Home / Index에 대해 grepping을 시도했지만 참조를 찾을 수 없었고 IIS에서 아무것도 볼 수 없었습니다 (6). 루트에서 default.aspx 페이지를 보았지만 관련 작업을 수행하지 않는 것 같습니다.

감사



답변

상기 봐 Default.aspx/Default.aspx.cs와 Global.asax.cs

기본 경로를 설정할 수 있습니다.

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

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


답변

ASP.NET Core

라우팅은 클래스 의 Configure방법으로 구성됩니다 Startup. “홈페이지”를 설정하려면 다음을 추가하면됩니다. 이렇게하면 사용자가 사이트의 기본 URL로 이동할 때 MapRoute 메서드에 정의 된 작업과 컨트롤러로 라우팅됩니다. 즉, yoursite.com은 사용자를 yoursite.com/foo/index로 라우팅합니다.

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

ASP.NET Core 이전

아래와 같이 App_Start / RouteConfig.cs (MVC 3 및 ​​4) 또는 Global.asax.cs (MVC 1 및 2)에있는 RegisterRoutes 메서드를 사용합니다. 이렇게하면 사용자가 사이트의 기본 URL로 이동하는 경우 MapRoute 메서드에 정의 된 작업과 컨트롤러로 라우팅됩니다. 즉, yoursite.com은 사용자를 yoursite.com/foo/index로 라우팅합니다.

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 }
    );
}


답변

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 }
                        );
    }
}


답변

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 }
        );
    }
}


답변

global.asax.cs의 RegisterRoutes 메서드를 확인하십시오. 경로 구성의 기본 위치입니다.


답변

MVC 5의 속성 라우팅

MVC 5 이전 routes.MapRoute(...)에는 RouteConfig.cs 파일 을 호출 하여 URL을 특정 작업 및 컨트롤러에 매핑 할 수있었습니다 . 여기에 홈페이지 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 }
);

이제 클래스 의 DoSomething액션이 ExampleControllerurl에 매핑됩니다 hey/now. 그러나 이것은 다른 작업에 대한 경로를 정의하고 싶을 때마다 지루할 수 있습니다. 따라서 MVC 5에서는 URL을 이와 같은 작업에 일치시키는 속성을 추가 할 수 있습니다.

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();
    }
}


답변

나는 대답을 시도했지만 그것은 나를 위해 일하지 않았습니다. 이것이 내가 한 일입니다.

새 컨트롤러 DefaultController를 만듭니다. 인덱스 작업에서 한 줄 리디렉션을 작성했습니다.

return Redirect("~/Default.aspx")

RouteConfig.cs에서 경로의 controller = “Default”를 변경합니다.

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