Po pierwsze, jestem nowy w MVC, więc proszę przeprosić pytanie, czy jest to podstawowe.Uzyskiwanie wartości parametru o wartości zerowej w kontrolerze po uruchomieniu trasy MVC
Używam niestandardowej trasy do utworzenia następującego adresu URL (http: // mysite/subscriber/12345), gdzie 12345 jest numerem subskrybenta. Chcę uruchomić akcję ShowAll w kontrolerze Subscriber. Moja trasa uruchamia się i używa Phil's route debugger, kiedy przechodzę w powyższym adresie URL, debugger trasy pokazuje ID jako 12345.
Mój kontroler akceptuje int jako identyfikator subskrybenta. Po uruchomieniu kontroler zgłasza błąd "Słownik parametrów zawiera wpis o wartości null dla parametru" id "typu nieululującego" System.Int32 ". Dlaczego debuger trasy pokazuje wartość, a kontroler jej nie widzi?
Oto moja trasa (pierwsza jest winowajcą)
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
);
Każdy pomysł, dlaczego ja dostaję null w akcji ShowAll? Oto podpis metoda działania:
public ActionResult ShowAll(int id)
Czy możesz zaksięgować wszystkie rejestracje tras z podpisem metody działania? –
Tak. Zaktualizowano pytanie. –
Myślę, że problem tkwi w twoim ograniczeniu. Nie jestem ninja z regexem, więc nie mogę ci tam pomóc. –