Cách đặt Bộ điều khiển mặc định trong asp.net MVC 4 & MVC 5


106

Làm cách nào để đặt Bộ điều khiển mặc định cho dự án ASP.NET MVC 4 của tôi mà không làm cho nó trở thành HomeController ?

Làm cách nào để thiết lập Khu vực mặc định khi ứng dụng khởi động?


như sẽ thay đổi từ "/" thành "/ home dưới dạng trang gốc?" / home "này phải hiển thị trên trình duyệt của khách hàng.
Andre Mesquita

Câu trả lời:


165

cách tốt nhất là thay đổi lộ trình của bạn. Bộ định tuyến mặc định (được xác định trong App_Start của bạn)/Home/Index

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

làm trang đích mặc định. Bạn có thể thay đổi thành bất kỳ tuyến đường nào bạn muốn.

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

13
Trong MVC 4 tuyến đường mặc định được thiết lập trong App_Start / RouteConfig.cs
Eric Labashosky

Rất đúng. Tôi làm việc currenlty vào các dự án trong cả hai và bỏ qua những điều này;)
Dave Alperovich

1
Dave đúng, nhưng tôi muốn nói thêm rằng trong MVC 4, việc định tuyến không còn được thực hiện trong Global.asax, mà là trong RouteConfig.cs trong App_Start .
Người Samaritan tốt bụng

2
Làm thế nào để làm cho điều đó hoạt động khi bộ điều khiển được tham chiếu trong tuyến mặc định nằm trong một khu vực khác (tức là không phải là khu vực gốc)?
superjos

bạn sẽ có thể đặt tuyến đường mặc định đến"AreaName/{controller}/{action}/{id}"
Dave Alperovich

30

Đặt mã bên dưới trong RouteConfig.cs trong thư mục App_Start

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

NẾU vẫn không hoạt động thì hãy làm theo các bước dưới đây

Cách thứ hai: Bạn đơn giản làm theo các bước dưới đây,

1) Nhấp chuột phải vào Dự án của bạn

2) Chọn thuộc tính

3) Chọn tùy chọn Web, sau đó chọn Trang cụ thể (Bộ điều khiển / Chế độ xem) và sau đó đặt trang đăng nhập của bạn

Ở đây, Tài khoản là người kiểm soát của tôi và Đăng nhập là phương thức hành động của tôi (được lưu trong Bộ điều khiển tài khoản)

Vui lòng xem nhập mô tả hình ảnh ở đâyảnh chụp màn hình đính kèm .


15
"Cách thứ hai" của bạn là về những gì sẽ xảy ra khi bạn gỡ lỗi dự án web của mình. Nó không liên quan gì đến "bộ điều khiển mặc định", tức là trang nào được hiển thị khi bạn điều hướng đến trang đích của trang web của mình.
Martin Liversage

25

Tôi không thấy câu hỏi này được trả lời:

Làm cách nào để thiết lập Khu vực mặc định khi ứng dụng khởi động?

Vì vậy, đây là cách bạn có thể thiết lập một Khu vực mặc định:

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
câu hỏi tuyệt vời, tại sao bạn không tạo nó làm một?
stuartdotnet

'Khu vực' là gì? Nếu tôi xác định một Chế độ xem, thì bố cục được tham chiếu có được tải và sau đó là một yêu cầu HTTP riêng với dữ liệu chế độ xem của tôi không? (tức là hoạt động Ajax riêng biệt) hay bố cục được hiển thị và bao quanh chế độ xem của tôi?
Gus Crawford

2
@GusCrawford 'Khu vực' là gì? Từ msdn.microsoft.com/en-us/library/ee671793(VS.100).aspx : Để chứa các dự án lớn, ASP.NET MVC cho phép bạn phân vùng các ứng dụng Web thành các đơn vị nhỏ hơn được gọi là các khu vực. Các khu vực cung cấp một cách để tách một ứng dụng Web MVC lớn thành các nhóm chức năng nhỏ hơn. Một vùng thực sự là một cấu trúc MVC bên trong một ứng dụng. Một ứng dụng có thể chứa một số cấu trúc MVC (khu vực).
Amna Ali

Đối với câu hỏi khác, tôi không nghĩ nó liên quan đến câu trả lời này và nó dường như không liên quan ngay cả với câu hỏi ban đầu. Có thể là, bạn nên đăng nó ở một nơi khác.
Amna Ali

Tôi hỏi riêng trong một chủ đề mới trả lời cảm ơn vì quan điểm.
Gus Crawford

2

Trong trường hợp bạn chỉ có một bộ điều khiển và bạn muốn truy cập mọi hành động trên root, bạn có thể bỏ qua tên bộ điều khiển như thế này

routes.MapRoute(
        "Default", 
        "{action}/{id}", 
        new { controller = "Home", action = "Index", 
        id = UrlParameter.Optional }
);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.