Передача параметра в представление индекса - PullRequest
1 голос
/ 23 сентября 2011

Довольно простой вопрос здесь. Почему я получаю сообщение об ошибке 404 при попытке просмотреть

/ Вендоры / 123

Но я смогу увидеть страницу, если зайду на

/ Производители / Индекс / 123

Можно ли как-нибудь заставить его работать первым? Я просто использую маршруты по умолчанию, зарегистрированные в Global.asax.

Ответы [ 2 ]

3 голосов
/ 23 сентября 2011

Потому что так определяется маршрут по умолчанию. Если вы не хотите указывать имя действия, вы можете изменить его следующим образом:

routes.MapRoute(
    "Default",
    "{controller}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

Это означает, что вы, вероятно, не должны делать этого, потому что теперь в вашем маршруте у вас нет возможности указать имя действия, которое вы хотите вызвать на данном контроллере, что означает, что вы можете иметь только одно действие каждый контроллер и это действие будет индекс. С другой стороны, если вы хотите сделать это на каком-то конкретном контроллере, вы все равно можете сохранить маршрут по умолчанию и добавить еще один:

routes.MapRoute(
    "Vendors",
    "vendors/{id}",
    new { controller = "Vendors", action = "Index", id = UrlParameter.Optional }
);

routes.MapRoute(
    "Default",
    "{controller}/{action}/{id}",
    new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
2 голосов
/ 23 сентября 2011

Потому что в вашей основной маршрутизации {id} ожидает после имени действия, но вы пытаетесь поместить его после имени контроллера.

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

Измените маршрут, чтобы принять {id} сразу после {controller}. Так же, как описал @Darin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...