ASP.NET MVC - вопрос о параметрах маршрутизации URL - PullRequest
0 голосов
/ 17 мая 2011

У меня есть это объявление маршрута:

routes.MapRoute(
                // Route name
                "WhiteLabelPartners",
                // URL with parameters
                "partners/{partnerName}/{controller}/{action}/{id}",
                // Parameter defaults
                new { partnerName = "", controller = "", action = "index", id = UrlParameter.Optional }
                );

Когда я пробую этот URL:

/partners/a/savings/index/1

... все работает нормально.Индексное действие контроллера сбережений выполнено.

Но, когда я пытаюсь этот URL:

/partners/a/savings/index

, я получаю "not found".

Если у меня есть UrlParameter.Optional для параметра {id}почему это все еще требуется?

Может кто-нибудь объяснить?Как я могу сделать параметр {id} необязательным?

Спасибо

1 Ответ

0 голосов
/ 17 мая 2011

Убедитесь, что в вашем действии индекса не ожидается параметр.

Если на вашем контроллере ваше действие Index выглядит так: публичный Индекс ActionResult (int id)

потребуется передать параметр в поле идентификатора, поскольку вы не указываете значение по умолчанию в маршруте. Вероятно, поэтому вы получаете ошибку «not found», поскольку она не может найти соответствующее действие. Ожидается:

публичный Индекс ActionResult ()

Вы можете оставить действие Index () без параметра, а из действия Index () извлечь значение переданного параметра 'id', если он есть, с помощью:

RouteData.Values ​​["id"]

чтобы использовать это. Дайте нам знать, если это работает для вас.

(примечание: я хотел опубликовать комментарий, например, tejs (но не вижу ссылки для добавления комментария ?!), чтобы попросить вас показать свою подпись метода Index на контроллере, поэтому, пожалуйста, включите это в вопрос.

...