я получил следующую ActionMethod:ActionLink генерирует параметры URL в пути вместо части
[Route("List/{listType}/{listID?}/{pageNumber?}/{pageSize?}/{output?}")]
public ActionResult List(int listType, int listID = 0, int pageNumber = 0, int pageSize = 10, string output = "html")
{
// Do Stuff
}
Требуется первый параметр, остальное не является обязательным.
Когда я звоню следующий по умолчанию метод MVC для создания ActionLink
@Html.ActionLink("MyLink", "List", "Message", new { listType = 4 }, null)
ссылка генерируется на:
/Message/List?listType=4
Я предположил, что это должно быть:
/Message/List/4
Когда Я нажимаю ссылку, я получаю страницу ошибки 404, что страница не найдена.
Когда я прохожу в значение по умолчанию для второго параметра
@Html.ActionLink("MyLink", "List", "Message", new { listType = 4, listID = 0 }, null)
Ссылка генерируется правильно:
/Message/List/4/0
Однако, если значение необязательно, я хочу, чтобы создать короткую ссылку (/ Сообщение/Список/4).
Я проверил и проверил, правильно ли именование параметра, но это не проблема ...
Я также добавил второй метод List
[Route("List/{listType})]
public ActionResult List(int listType)
{
// Do Stuff
}
ссылка только один параметр генерируется правильно, но когда я перейти в более параметров, они генерируются как:
/Message/List/4?listID=5
Offcourse routes.MapMvcAttributeRoutes(); был добавлен в функцию RegisterRoutes ...
Какую проблему я не вижу, из-за чего возникает некорректная ссылка, когда я передаю только один параметр?
К сожалению, это уже как мой RouteConfig настроен. Я заметил, что когда я использую @ Html.ActionLink («MyLink», «List», «Message», new {id = 4}, null) Ссылка работает как ожидалось (/ message/list/4), однако, когда я добавляю еще один параметр, они добавляются как параметр в URL (/ message/list/4? ListID = 8) – Barry