У меня есть маршрут, по которому я хочу выполнить действие контроллера, только если все параметры указаны в URL. Но когда я иду на URL без параметров, он показывает страницу действий. Он должен автоматически вернуть код ошибки 404.
Я знаю, что по умолчанию это проблема. Но я не знаю, как это исправить, не выполнив if(param == null) return NotFound();
Вот мой маршрут:
app.UseMvc(routes =>
{
routes.MapRoute(
"Home_AddVoucher",
"{controller}/{action}/{id:int}/{price:decimal}/{from:regex(^\\d\\d-\\d{{2}}-\\d{{4}}$)}/{to}/{passengers:range(1, 9)}",
new { controller = "Home", action = "AddVoucher" }
);
routes.MapRoute(
"Home_getPrice",
"{controller}/{action}/{productId}",
new { controller = "Home", action = "getPrice" }
);
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}");
});
Я хочу, чтобы все параметры маршрута AddVoucher
были предоставлены для вызова действия контроллера.
Действие контроллера:
public async Task<IActionResult> AddVoucher(int id, double price, DateTime from, string to, int passengers)
{
AddVaucherModel addVaucherModel = new AddVaucherModel();
return View(addVaucherModel);
}