2009-07-17 34 views
89

Trong asp.net MVC "trang chủ" (tức là tuyến đường hiển thị khi nhấn www.foo.com) được đặt thành Nhà/Chỉ mục.Đặt "Trang chủ" trong Asp.Net MVC

  • Giá trị này được lưu ở đâu?
  • Làm cách nào để thay đổi "trang chủ"?
  • Có điều gì thanh lịch hơn bằng cách sử dụng RedirectToRoute() trong hành động Chỉ mục của bộ điều khiển nhà không?

Tôi đã thử tìm kiếm Trang chủ/Chỉ mục trong dự án của mình và không thể tìm thấy tham chiếu, cũng như tôi không thể thấy bất kỳ điều gì trong IIS (6). Tôi đã xem trang default.aspx trong thư mục gốc, nhưng điều đó dường như không làm bất cứ điều gì có liên quan.

Cảm ơn

Trả lời

133

Nhìn vào Default.aspx/Default.aspx.cs và Global.asax.cs

Bạn có thể thiết lập tuyến đường mặc định:

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

Chỉ cần thay đổi tên Bộ điều khiển/hành động thành mặc định bạn muốn. Đó sẽ là tuyến cuối cùng trong bảng định tuyến.

+90

Trong MVC 4, điều này có thể được thực hiện trong App_Start/RouteConfig.cs – NikolaiDante

+6

@NikolaiDante bạn nên chắc rằng bình luận một câu trả lời như tôi gần bỏ qua nó và nó nhanh hơn câu trả lời này. :) Cảm ơn – GazB

+3

Trong MVC 5. nếu bạn có đăng nhập biểu mẫu, khi bạn nhấp vào đăng nhập trên trang chủ, nó sẽ vẫn chuyển hướng đến bộ điều khiển Trang chủ, không phải bộ điều khiển tùy chỉnh của bạn được chỉ định trong tuyến đường. đăng ký hành động sẽ làm điều tương tự. Vì vậy, ngoài việc thay đổi routeconfig, cũng cần phải thay đổi một số mã nơi gọi RedirectionToAction ("Index", "Home") và thay thế nó bằng tên bộ điều khiển và hành động của riêng bạn. – anIBMer

3

séc RegisterRoutes phương pháp trong global.asax.cs - đó là nơi mặc định cho cấu hình tuyến đường ...

14

ASP.NET Lõi

Routing được cấu hình trong phương pháp Configure của lớp Startup. Để đặt "trang chủ", chỉ cần thêm thông tin sau đây. Điều này sẽ khiến người dùng được chuyển đến bộ điều khiển và hành động được xác định trong phương thức MapRoute khi/nếu họ điều hướng đến URL cơ sở của trang web của bạn, tức là yoursite.com sẽ định tuyến người dùng đến yoursite.com/foo/index:

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

Pre-ASP.NET Core

Sử dụng phương thức RegisterRoutes nằm trong App_Start/RouteConfig.cs (MVC 3 và 4) hoặc Global.asax.cs (MVC 1 và 2) như bên dưới. Điều này sẽ khiến người dùng được định tuyến đến bộ điều khiển và hành động được xác định trong phương thức MapRoute nếu họ điều hướng đến URL cơ sở của trang web của bạn, tức là yoursite.com sẽ định tuyến người dùng đến 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 } 
    ); 
} 
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

Tôi đã thử câu trả lời nhưng nó không hiệu quả đối với tôi. Đây là những gì tôi đã kết thúc làm:

Tạo bộ điều khiển mới DefaultController. Trong hành động chỉ mục, tôi đã viết một chuyển hướng dòng:

return Redirect("~/Default.aspx") 

Trong RouteConfig.cs, thay đổi controller = "Mặc định" cho tuyến đường.

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

Điều này sẽ tạo ra một chuyển hướng và Công cụ tìm kiếm không thích điều đó ... – oneNiceFriend

3

Bước 1: Nhấp vào Tệp Global.asax trong giải pháp của bạn.

Bước 2: Sau đó, Tới Định nghĩa

RouteConfig.RegisterRoutes(RouteTable.Routes);

Bước 3: Thay đổi Tên điều khiển và Xem Tên

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

Attribute Routing trong MVC 5

Trước MVC 5 bạn có thể ánh xạ URL tới các hành động và bộ điều khiển cụ thể bằng cách gọi routes.MapRoute(...) trong tệp RouteConfig.cs. Đây là nơi url của trang chủ được lưu trữ (Home/Index). Tuy nhiên, nếu bạn sửa đổi tuyến đường mặc định như được hiển thị bên dưới,

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

hãy nhớ rằng điều này sẽ ảnh hưởng đến URL của các hành động và bộ điều khiển khác. Ví dụ, nếu bạn có một lớp điều khiển tên là ExampleController và một phương thức hành động bên trong nó được gọi là DoSomething, thì url mặc định mong đợi ExampleController/DoSomething sẽ không hoạt động nữa vì tuyến đường mặc định đã được thay đổi.

Có thể chỉnh lại này là để không gây rối với các tuyến đường mặc định và tạo các tuyến đường mới trong file RouteConfig.cs cho các hành động khác và các bộ điều khiển như vậy,

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

Bây giờ DoSomething hành động của lớp ExampleController sẽ được ánh xạ tới url hey/now. Nhưng điều này có thể khiến bạn buồn tẻ khi bạn muốn xác định các tuyến cho các hành động khác nhau. Vì vậy, trong MVC 5 bây giờ bạn có thể thêm các thuộc tính để phù hợp với các url để hành động như vậy,

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(); 
    } 
} 
Các vấn đề liên quan