Должно работать, если вы сделаете необязательным параметр шаблона {eventId}
в шаблоне маршрута
[RoutePrefix("Registration")]
public class RegistrationController : Controller {
//GET Registration/Add/1
//GET Registration/Add?eventId=1
[HttpGet]
[Route("Add/{eventId:int?}")]
public ActionResult Add(int eventId) {
//...
}
}
Причина, по которой они не работали, заключается в том, что шаблон маршрута Add/{eventId}
означает, что маршрут будет совпадать только при наличии {eventId}
, поэтому
http://localhost/Registration/Add/1
работает.
Делая его (eventId
) необязательным eventid?
, это позволит
http://localhost/Registration/Add
для работы в качестве параметра шаблона не требуется. Теперь это позволит использовать строку запроса ?eventId=1
, которую таблица маршрутизации будет использовать для сопоставления аргумента параметра int eventId
в действии.
http://localhost/Registration/Add?eventId=1