Во-первых, я новичок в MVC, поэтому, пожалуйста, извините, если это просто.
Я использую пользовательский маршрут для создания следующего URL (http://mysite/subscriber/12345), где 12345 - номер абонента. Я хочу, чтобы он выполнял действие ShowAll
в контроллере Subscriber
. Мой маршрут запускается и используя отладчик маршрута Фила , когда я передаю вышеуказанный URL, отладчик маршрута показывает идентификатор как 12345.
Мой контроллер принимает int как subscriberID
. Когда это срабатывает,
контроллер выдает ошибку
Словарь параметров содержит пустую запись для параметра id с ненулевым типом System.Int32.
Почему отладчик маршрута показывает значение, а контроллер его не видит?
Вот мой маршрут (первый - виновник)
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
);
Есть идеи, почему я получаю ноль в действии ShowAll
? Вот подпись метода действия:
public ActionResult ShowAll(int id)