Tôi đã cố gắng quá tải phương pháp chỉ mục của mình.C# mvc 3, quá tải hành động?
Dưới đây là phương pháp chỉ số của tôi:
[ActionName("Index")]
public ActionResult IndexDefault()
{
}
[ActionName("Index")]
public ActionResult IndexWithEvent(string eventName)
{
}
[ActionName("Index")]
public ActionResult IndexWithEventAndLanguage(string eventName, string language)
{
}
Điều này sẽ giúp đúc:
Yêu cầu hiện tại cho 'Index' hành động vào loại điều khiển 'CoreController' là mơ hồ giữa các phương thức hành động sau đây: System. Web.Mvc.ActionResult IndexDefault() trên loại ManageMvc.Controllers.CoreController System.Web.Mvc.ActionResult IndexWithEvent (System.String) trên loại ManageMvc.Controllers.CoreController System.Web.Mvc.ActionResult IndexWithEventAndLanguage (System.String, Hệ thống. Chuỗi) trên loại ManageMvc.Controllers.CoreController
Không thể quá tải hành động chỉ mục với 3 phương thức GET khác nhau?
Ngoài ra, nếu có thể, tuyến đường chính xác sẽ là gì? Tôi có điều này:
routes.MapRoute(
"IndexRoute", // Route name
"{eventName}/{language}/Core/{action}", // URL with parameters
new { controller = "Core", action = "Index", eventName = UrlParameter.Optional, language = UrlParameter.Optional }
);
Url sẽ trông như thế:
localhost/Core/Index
localhost/EVENT_NAME/Core/Index
localhost/EVENT_NAME/ngôn ngữ/Core/Index
Tại sao quá trình này không hoạt động? – Patrick
@Patrick - Bởi vì ASP.NET MVC không thể quyết định sử dụng quá tải của bạn dựa trên cách bạn định tuyến (nó không đủ thông minh để gọi các tình trạng quá tải khác nhau dựa trên các tham số nào được truyền trong URL). –
Ahh ok, cảm ơn. Tôi đã thay đổi nó theo cách bạn đề xuất và nó hoạt động. – Patrick