Невозможно привязать к параметру - PullRequest
3 голосов
/ 08 октября 2010

У меня есть маршрутизация по умолчанию:

routes.MapRoute(
            "Shortie", // Route name
            "{controller}/{id}", // URL with parameters
            new { controller = "Ettan", action = "Index", id = "id" } // Parameter defaults
            );

routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Ettan", action = "Index", id = UrlParameter.Optional } // Parameter defaults
            );

У меня есть контроллер: NewsController. У него есть один метод, например:

public ActionResult Index(int id)
{
  ...
}

Если я захожу в / News / Index / 123, это работает. / Новости / 123 работы. Однако / News / Index? Id = 123 нет (он не может найти метод с именем «index», где id может быть нулевым). Поэтому мне кажется, что мне не хватает понимания того, как работает маршрутизация и связывание моделей.

Причина, по которой я спрашиваю, состоит в том, что я хочу иметь выпадающий список с разными источниками новостей с параметром "id". Поэтому я могу выбрать один источник новостей (например, «спорт», id = 123), и он должен быть направлен на мой метод индекса. Но я не могу заставить это работать.

1 Ответ

1 голос
/ 19 октября 2010

ASP.NET MVC Routing работает с использованием отражения.Он будет искать внутри контроллера метод, соответствующий шаблону, который вы определяете в своих маршрутах.Если он не может найти ... ну, вы видели, что происходит.

Таким образом, ответ (как опубликовано в комментариях) изменить тип вашего параметра id на Nullable<int>т.е. int?.

...