我正在尝试设置mvc 5 attrribute路线,以便
https://localhost/19a6de7e-ee19-43f5-a9c9-8bbdc8dcfc5e
路由到/ home / index初始化id param,我似乎无法正确使用它。
我添加了routes.MapMvcAttributeRoutes();到默认映射路由后的注册路由
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
我尝试了很多东西,但除非完全定义路线,否则似乎无法使其工作。
有什么建议吗?
public class HomeController : Controller
{
[Route("{id?}")]
public ActionResult Index(Guid? id)
{
ViewBag.Message = id;
return View();
}
}
答案 0 :(得分:3)
现在添加了一个内置的GuidRouteConstraint(),它更适合使用RegEx。
答案 1 :(得分:0)
@ chrisp_68,您需要在默认路线之前放置自定义路线:
routes.MapRoute(
name: "Just ID",
url: "{id}",
defaults: new { controller = "Home", action = "Index" }
);
然后,您需要创建一个以id作为参数的动作:
public ActionResult IndexID(string id) {
...
}
您可以考虑的另一件事是将id的值限制为guid模式:
constraints: new { id = @"[a-f0-9-]+" }
(或者你需要的任何模式)