С кошмаром, надеюсь, я просто тупой.
У меня есть следующие действия контроллера:
<HttpGet()>
Function News() As ActionResult
End Function
<HttpGet()>
Function News(ByVal id As Integer) As ActionResult
End Function
Я хочу, чтобы он был умным, и переходите к первому, если у меня нет идентификатора в URL, и второму, если есть.
Я получил следующую ошибку:
Текущий запрос на действие «Новости» для типа контроллера «MarketsController» неоднозначен> между следующими методами действия:
System.Web.Mvc.ActionResult News () по типу TradeChaseMVC.MarketsController
Новости System.Web.Mvc.ActionResult (Int32) для типа TradeChaseMVC.MarketsController
Итак, я подумал, если я явно создал маршруты без необязательного параметра id, например:
routes.MapRoute( _
"Default2", _
"{controller}/{action}/{id}",
New With {.controller = "Home", .action = "Index"},
New With {.action = "^[a-zA-Z_]+$", .id = "\d{1,8}|"}
)
routes.MapRoute( _
"Default", _
"{controller}/{action}",
New With {.controller = "Home", .action = "Index"},
New With {.action = "^[a-zA-Z_]+$"}
)
Это сработало бы, но это не та же ошибка.
Теперь я знаю, что простое решение состоит в том, чтобы называть мои методы разными вещами, но я не хочу этого делать.
Я также думал о создании атрибута для префикса метода ID, чтобы проверить, есть ли там ID, и если он не разрешает этот метод, но я не могу заставить это работать.
Буду признателен за любую помощь.
Karl