UPDATE 2UrlHelper.Action không lập bản đồ đến khu vực mà bộ điều khiển là trong một cách chính xác
Ok - Vì vậy, nó trông giống như câu hỏi của tôi đang thay đổi một lần nữa một chút :-)
Tôi đã nhận ra bây giờ mà UrlHelper.Action dường như không giải quyết chính xác URL trong bất kỳ Khu vực nào trừ khi tên khu vực được chỉ định rõ ràng. Nếu nó không được chỉ định, nó dường như trả về bất kỳ tên vùng nào mà chúng ta đang làm, nó trông giống như nó đang hoạt động từ một phần của trang web, nhưng sau đó cùng một liên kết trong một khu vực khác sẽ giải quyết nhầm tên Area.
Hoặc tôi đã làm điều gì đó sôi nổi để làm cho nó làm điều này hoặc tôi không hoàn toàn hiểu cách thức phương pháp hành động này có nghĩa là để làm việc.
UPDATE 1
tôi có thể làm cho công việc này bằng cách làm như sau:
return helper.Action("add", "product",new {area = "storemanagement"});
làm thay đổi câu hỏi của tôi một chút.
Cách định tuyến MVC không làm ảnh hưởng đến bộ điều khiển có cùng tên và giải quyết cho bộ điều khiển bằng phương thức hành động được chỉ định?
Origional gửi
Hey mọi người,
tôi đã tạo ra một phương pháp helper trên lớp UrlHelper và đang gặp một vấn đề nhỏ với một trong những tuyến đường.
Dưới đây là các mã cho phương thức helper trong câu hỏi:
public static string AddProduct(this UrlHelper helper)
{
return helper.Action("add", "product");
}
tôi về cơ bản có hai bộ điều khiển có tên là "sản phẩm" mà là ở các khu vực khác nhau của trang web. Một trong số chúng được sử dụng để duyệt các sản phẩm và một cho quản lý sản phẩm. Chỉ một trong các bộ điều khiển sản phẩm chứa một phương thức hành động "Thêm".
Khi tôi ra giá trị của addProduct
<%: Url.AddProduct() %>
Tên khu vực đã được giải quyết với diện tích hiện tại tôi đang duyệt và không phải là khu vực chính xác cho bộ điều khiển sản phẩm có chứa các phương thức Add hành động.
Có điều gì tôi cần thiết lập trong các tuyến đường không? Tôi không chính xác chắc chắn như thế nào định tuyến làm việc với UrlHelper.Action vì vậy tôi dunno nếu nó có thể làm những gì tôi đang cố gắng.
Chúc mừng mọi trợ giúp.
thử thêm bộ điều khiển và khu vực tên là đối số bổ sung bằng phương pháp này sig 'UrlHelper.Action Method (String, String, Object)' – Ahmad
Cảm ơn Ahmad. Điều đó thực sự làm việc vì vậy tôi sẽ thêm nó như là một bản cập nhật cho câu hỏi của tôi. Tôi vẫn quan tâm đến lý do tại sao hệ thống định tuyến không phân biệt hai bộ điều khiển và thay vào đó dường như chỉ bỏ cuộc và giả sử sử dụng khu vực hiện tại. –
để trả lời câu hỏi của bạn, một trong những nhu cầu đào sâu trong nội bộ của khuôn khổ MVC để tìm hiểu lý do tại sao điều này xảy ra. Trong mọi trường hợp, từ những gì tôi đã thấy chỉ có các toán tử 'controller' và' action' có điều trị đặc biệt tức là khu vực được suy ra/giả định dựa trên nơi bạn gọi người trợ giúp. Vì vậy cần phải xác định tham số vùng. – Ahmad