Tôi cố gắng để thiết lập định tuyến tùy chỉnh với các tuyến đường ánh xạ sauasp.net-mvc vấn đề định tuyến: Từ điển thông số chứa một mục null cho tham số
chỉnh sửa: đầy đủ lộ trình cấu hình của tôi
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
#region FixtureAdmin
routes.MapRoute(
name: "FixtureEdit",
url: "{controller}/{action}/{id}",
defaults: new { controller = "FixtureAdmin", action = "Edit", id = UrlParameter.Optional }
);
#endregion
#region Results
routes.MapRoute(
name: "ResultAdd",
url: "{controller}/{action}/{fixtureId}",
defaults: new { controller = "Result", action = "Add", fixtureId = UrlParameter.Optional }
);
#endregion
Và mã điều khiển của tôi
public ActionResult Add(int fixtureId)
{
// return model to view etc..
}
Điều này xảy ra với ngoại lệ, mặc dù tôi đã chỉ định tham số là tùy chọn.
Từ điển thông số chứa một mục null cho tham số 'fixtureId'
Điều kỳ lạ là, nếu tôi thay đổi các tham số của Add hành động để chỉ 'Id' thì URL sau đây sẽ làm việc Kết quả/Thêm/1. Tôi đang bối rối, có một số định tuyến mặc định đó là trọng của một tùy chỉnh của tôi? Tại sao thay đổi tham số thành công việc 'Id'?
Sửa
Chỉ cần để kiểm tra, tôi đã thêm tham số khác để hành động
public ActionResult Add(int? fixtureId, int? testId)
sau đó tôi thay đổi nội dung các tuyến đường phù hợp và bây giờ nó hoạt động, vì vậy tôi nghĩ đó là một vấn đề với định tuyến mặc định .
được bất cứ đường nào khác của họ cũng được cấu hình trước hoặc sau này – rajansoft1
Nếu bạn muốn để có thể gọi 'Thêm' mà không chỉ định id,' fixtureId' phải là nullable - 'int? fixtureId'. "Tùy chọn" trong ngữ cảnh của tuyến đường có nghĩa là nó không phải nằm trong URL, để bạn có thể có các hành động như 'public ActionResult Add() {/ * no parameters * /}' – Alex
Điều duy nhất tôi có thể nghĩ đến là bạn đang sử dụng một int là không nullable? Id có thể được đưa vào framework MVC để có thể hoạt động khác nhau. – David