Как перенаправить с URL в MVC5
У меня есть URL, который говорит www.test.com/12345. Когда пользователь нажимает этот URL, он должен быть перенаправлен на соответствующий метод действия, где "12345" принимает в качестве его параметра.
У меня есть небольшая идея, которую можно использовать с RouteConfig, но пока нет четкой картины.
Может ли кто-нибудь помочь мне в этом, пожалуйста?
Метод действия
[HttpPost]
public ActionResult DetailsByCode(string code)
{
IEnumerable<IProductListDto> prdctListDto = _productListDetails.GetProductListByCode(accessCode);
Return "success";
}
а routeconfig это
routes.MapRoute(
name: "Accesscode",
url: "{Areas}/{controller}/{action}/{id}",
defaults: new { Areas = "Student", controller = "Student", action = "DetailsByCode", id = string.Empty }
);
Мой полный routeconfig.cs
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "DetailsByCodeRoute",
url: "{Areas}/{controller}/{action}/{id}",
defaults: new { Areas = "Student", controller = "Student", action = "DetailsByCode" }
);
routes.MapRoute(
name: "Accesscode",
url: "{Areas}/{controller}/{action}/{id}",
defaults: new { Areas = "Student", controller = "Student", action = "DetailsByCode", id = string.Empty }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "ChangePassword",
url: "{Areas}/{controller}/{action}/{id}",
defaults: new { Areas = "User", controller = "User", action = "ChangePassword", id = string.Empty }
);
routes.MapRoute(
name: "PasswordReset",
url: "{Areas}/{controller}/{action}/{id}",
defaults: new { Areas = "User", controller = "User", action = "PasswordReset", id = string.Empty }
);
2 ответа
Вместо добавления нового маршрута я добавил одну строку в Routeconfig.cs, которая предназначена для включения маршрутизации атрибутов.
routes.MapMvcAttributeRoutes();
и одна строка перед методом действия
[Route("{accesscode:int}")]
В вашей ситуации вы можете использовать ограничения маршрута.
Например, прочитайте этот пост. http://www.c-sharpcorner.com/UploadFile/ff2f08/custom-route-constraints-in-Asp-Net-mvc-5/