У меня была похожая ситуация.
Примерно так:
Html.ActionLink("Click me", "Index", "Student",
{ ID = theclass.StudentID }, null)
всегда отображается как
localhost/myapp/Student/Index/1234
Пока я экспериментировал, я заметил, что часть Index
исчезла из URL, если я изменил имя параметра с ID
на что-то вроде IDX
localhost/myapp/Student/?IDX=1234
Оказывается, что имя параметра ID
является особенным из-за записи маршрута по умолчанию в Global.asax.cs (которая устанавливает шаблон доступа к бизнес-объектам RESTful)
Чтобы обойти это, я просто перестал использовать Index
для получения идентификатора и вместо этого определил другой метод, подобный этому:
public ActionResult Detail(int ID)
В конце концов, согласно принципу проектирования RESTfull, Index
предназначен для показа «списка бизнес-объектов» или некоторого вида коллекции бизнес-объектов, а не одного бизнес-объекта. Поэтому передача идентификатора бизнес-объекта в Index
является нарушением шаблона.
Вместо того, чтобы повернуть руку и заставить свой неуклюжий дизайн, я перешел на естественный путь.
Я полагаю, что наилучшей практикой для проектирования Index
точки входа является сохранение ее без параметров или передача только параметров фильтрации / сортировки.