Tôi có tuyến đường thiết lập như:MVC Routing Hạn chế trên điều khiển tên
context.MapRoute(
name: "Area",
url: "Area/{controller}/{action}",
defaults: new
{
controller = "Home",
action = "Dashboard"
}
);
context.MapRoute(
name: "AccountArea",
url: "Area/{accountFriendlyId}/{controller}/{action}",
defaults: new
{
controller = "Home",
action = "Dashboard",
accountFriendlyId = RouteParameter.Optional
}
);
context.MapRoute(
name: "AccountCampaignArea",
url: "Area/{accountFriendlyId}/{campaignFriendlyId}/{controller}/{action}",
defaults: new
{
controller = "Home",
action = "Dashboard",
accountFriendlyId = RouteParameter.Optional,
campaignFriendlyId = RouteParameter.Optional
}
);
Và tôi có một khát vọng cháy bỏng để có Area/friendlyAccountName/Home
đưa tôi đến Dashboard()
nhưng điều này không làm việc (404). Tôi nghĩ lý do là chúng ta đi tìm một bộ điều khiển friendlyAccountName.
Thoải mái với kiến thức rằng nếu tôi nên chọn đặt tên cho tài khoản sau khi một trong các bộ điều khiển của tôi bị hỏng, có cách nào đi qua tuyến kế tiếp trong trường hợp chuỗi không tìm được bộ điều khiển tương ứng không? Có cách nào để sử dụng phản ánh và tránh duy trì một ràng buộc mỗi khi tôi sửa đổi danh sách các bộ điều khiển của tôi?
EDIT
Bạn có biết một cách mà không sử dụng phản ánh hoặc ít nhất là có chứa các tìm kiếm loại có nguồn gốc đến lĩnh vực này? Tôi không thích ý tưởng phát sinh phí đó hai lần khi tham số tuyến thứ hai khớp với tên bộ điều khiển (ràng buộc vượt qua rồi tìm kiếm lại khi xây dựng bộ điều khiển). Tôi muốn có một cách để bắt ngoại lệ tại thời điểm xây dựng một bộ điều khiển và sau đó sao lưu và đi qua các tuyến đường tiếp theo.
Nếu không có hai tuyến đường đầu tiên, 'Ar ea/Controller/Action' sẽ điền vào các thông số id thân thiện và gửi cho tôi vào bộ điều khiển và hành động mặc định và 'Area/friendly/Controller/Action' sẽ thất bại –
Ah, xin lỗi, tôi không bắt được' {accountFriendlyId} ' sẽ là tên hoạt động hợp lệ. Tôi sẽ cập nhật câu trả lời. –
Quy ước về cách các chuỗi này được phân tích cú pháp là gì? Tôi đã không có đầu mối bạn có thể làm điều đó nội tuyến với một chữ (tôi có lẽ sẽ không sử dụng chúng cho điều này đặc biệt). –