Trước hết, tôi mới tham gia MVC, vì vậy hãy giải thích câu hỏi nếu nó là cơ bản.Nhận giá trị tham số null trong bộ điều khiển khi tuyến đường MVC kích hoạt
Tôi đang sử dụng tuyến đường tùy chỉnh để tạo URL sau (http: // mysite/subscriber/12345) trong đó 12345 là số người đăng ký. Tôi muốn nó chạy hành động Show2 ShowAll trong bộ điều khiển Người đăng ký. Tuyến đường của tôi đang kích hoạt và sử dụng Phil's route debugger, khi tôi chuyển vào url ở trên, trình gỡ lỗi tuyến đường hiển thị ID là 12345.
Bộ điều khiển của tôi đang chấp nhận int làm người đăng ký. Khi nó cháy, bộ điều khiển ném lỗi "Từ điển tham số chứa một mục nhập rỗng cho tham số 'id' của loại không có giá trị 'System.Int32". Tại sao trình gỡ rối tuyến đường hiển thị một giá trị và bộ điều khiển không nhìn thấy nó?
Dưới đây là tuyến đường của tôi (người đầu tiên là thủ phạm)
routes.MapRoute(
"SubscriberAll",
"subscriber/{id}",
new { controller = "Subscriber", action = "ShowAll", id=0 },
new { id = @"\d+" } //confirm numeric
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Bất cứ ý tưởng tại sao tôi nhận được một null trong hành động ShowAll? Dưới đây là phương pháp hành động chữ ký:
public ActionResult ShowAll(int id)
Bạn có thể đăng tất cả đăng ký tuyến đường bằng chữ ký phương thức hành động không? –
Có. Đã cập nhật câu hỏi. –
Tôi nghĩ vấn đề là do sự ràng buộc của bạn. Tôi không phải là một ninja regex mặc dù vậy tôi không thể giúp bạn ở đó. –