2016-10-27 12 views
5

Tôi đã các tuyến đường sau thành lậptag-những người giúp đỡ không được tạo ra một cách chính xác url của tôi

app.UseMvc(routes => 
    { 

     routes.MapRoute(
      name: "admin", 
      template: "{controller=Home}/{action=Index}/{id?}", 
      defaults: new {Area = "Admin"}, 
      constraints: new {HostConstraint = new MyConstraint()}); 
     routes.MapRoute(
      name: "admin-rep", 
      template: "Rep/{controller=Home}/{action=Index}/{id?}", 
      defaults: new { Area = "" }, 
      constraints: new { HostConstraint = new MyConstraint() }); 

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

MyConstraint trong trường hợp này luôn luôn trả đúng.

  • Nếu tôi cố gắng truy cập tuyến đường "/" tôi sẽ kết thúc trong khu vực Quản trị, Trang chủ điều khiển, chỉ mục hành động. Không sao.
  • Nếu tôi cố truy cập "/ rep" thì tôi sẽ kết thúc ở vùng gốc, bộ điều khiển nhà, chỉ mục hành động. ĐƯỢC . Vấn đề là sau đó quan điểm này có một liên kết tham chiếu đến một hành động khác trong HomeController của tôi (từ vùng gốc). Tôi đã mong đợi liên kết trỏ tới/rep/home/action2 nhưng thay vào đó, tuyến đường được tạo là/home/action2. Nó giống như có một số kết hợp sai khi tạo ra các url ??
<a asp-action="Action">Action</a> 

@Html.ActionLink("Action", "Action") 

Trả lời

3

sắp xếp lại các tuyến đường của bạn, hãy viết admin-rep đầu tiên và sau đó admin

app.UseMvc(routes => 
{ 


    routes.MapRoute(
     name: "admin-rep", 
     template: "Rep/{controller=Home}/{action=Index}/{id?}", 
     defaults: new { Area = "" }, 
     constraints: new { HostConstraint = new MyConstraint() }); 

    routes.MapRoute(
     name: "admin", 
     template: "{controller=Home}/{action=Index}/{id?}", 
     defaults: new {Area = "Admin"}, 
     constraints: new {HostConstraint = new MyConstraint()}); 

    routes.MapRoute(
     name: "default", 
     template: "{controller=Home}/{action=Index}/{id?}"); 
}); 
+0

Tôi đồng ý ... có lẽ là "admin" bạn định tuyến đang quản lý cuộc gọi đến/đại diện – Bardo

Các vấn đề liên quan