2010-11-03 28 views
6

Tôi có thể thiết lập một tuyến đường sẽ được ánh xạ từ một URL gốc cấp như thế này?ASP.NET MVC Routing - "Trống" Route

http://localhost:49658/

Tôi đang sử dụng máy chủ web tích hợp VS2010.

Cố gắng thiết lập một con đường với một trống hoặc một chuỗi URL duy nhất-slash không hoạt động:

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

Nó dẫn đến lỗi "URL tuyến đường không thể bắt đầu với một '/' hoặc ' ~ 'ký tự và nó không thể chứa một'? ' tính cách.". Cảm ơn trước! Định nghĩa toàn bộ tuyến đường của tôi ở đây:

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

     routes.MapRoute(
      "EditingTitles", // Route name 
      "{controller}/{action}/{startingLetter}", // URL with parameters 
      new { controller = "Admin", action = "Index", startingLetter = UrlParameter.Optional } // Parameter defaults 
     ); 

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

Hiển thị cho chúng tôi các tuyến đường khác của bạn, tôi gặp sự cố tương tự ở trên (và ghi chú của bạn trên câu trả lời của XSaint32), tuyến đường mặc định của tôi là 404 trừ khi tôi chỉ định bộ điều khiển/hành động và đó là do tuyến đường có tên xấu eslewhere trong các tuyến đường của tôi – Jimmy

Trả lời

8

Bạn đang cố gắng đạt được điều gì ở đây ... URL giống như thế này? http://www.acme.com/? Bởi vì nếu bạn đang có, tuyến đường mặc định sẽ đạt được điều đó khi không có tham số nào được chỉ định.

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

Bạn nói đúng, URL đó là những gì tôi đang cố gắng đạt được. Tôi đã có một tuyến đường chính xác như bạn chỉ định. . . nhưng tôi nhận được một HTTP 404 ("tài nguyên không thể tìm được") lỗi khi tôi f5 dự án của tôi và nó chạm URL mặc định, vì vậy nó có vẻ như tôi đã phải bằng cách nào đó xử lý các "URL trống rỗng" trường hợp đặc biệt. – blaster

+0

@blaster - Cho nó một shot. Xem nếu nó làm việc cho bạn. – dotariel

+0

Bạn có thể dán tuyến đường đó vào đây không? – dotariel

4

dùng ASPNET MVC5: RouteConfig.cs file:

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
    routes.MapRoute(
     name: "Homepage", 
     url: "", 
     defaults: new { controller = "Content", action = "Index" } 
    ); 
    routes.MapRoute(
     name: "foo", 
     url: "bar", 
     defaults: new { controller = "Content", action = "Index" } 
    ); 
    routes.MapMvcAttributeRoutes(); 

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

Plus:
Nếu bạn muốn chuyển hướng trang web của bạn để định tuyến một cách tự động, như "http://www.yoursite.com/" thành " http://www.yoursite.com/bar", chỉ cần sử dụng các phương pháp RedirectToRoute():

public class ContentController : Controller 
    { 
     public ActionResult Index() 
     { 
      return RedirectToRoute("foo"); 
     } 
    } 
Các vấn đề liên quan