Global.asax
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
// Enable attribute route
RouteTable.Routes.MapMvcAttributeRoutes();
AreaRegistration.RegisterAllAreas();
RouteConfig.RegisterRoutes(RouteTable.Routes);
}
}
or
RouteConfig.cs
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Enable attribute route
routes.MapMvcAttributeRoutes();
AreaRegistration.RegisterAllAreas();
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
Direct route
public class BookController : Controller {
// Map to 'http://prhythm.com.tw/Pet/10'
[Route("Pet/{id}")]
public ActionResult Pet(int? id) {
return View();
}
}
Optional paramter
public class BookController : Controller {
// Optional parameter id
// Map to 'http://prhythm.com.tw/Pet'
// or 'http://prhythm.com.tw/Pet/5'
[Route("Pet/{id?}")]
public ActionResult Pet(int? id) {
return View();
}
}
Default parameter value
public class BookController : Controller {
// Default value of id
// Map to 'http://prhythm.com.tw/Pet'
// or 'http://prhythm.com.tw/Pet/10'
[Route("Pet/{id=10}")]
public ActionResult Pet(int? id) {
return View();
}
}
Paramter constrains
public class BookController : Controller {
// Paramters constrains
[Route("Pet/{id:int}")]
public ActionResult Pet(int? id) {
return View();
}
}
| Constraint | Description | Example |
|---|---|---|
| alpha | Matches uppercase or lowercase Latin alphabet characters (a-z, A-Z) | {x:alpha} |
| bool | Matches a Boolean value. | {x:bool} |
| datetime | Matches a DateTime value. | {x:datetime} |
| decimal | Matches a decimal value. | {x:decimal} |
| double | Matches a 64-bit floating-point value. | {x:double} |
| float | Matches a 32-bit floating-point value. | {x:float} |
| guid | Matches a GUID value. | {x:guid} |
| int | Matches a 32-bit integer value. | {x:int} |
| length | Matches a string with the specified length or within a specified range of lengths. | {x:length(6)} {x:length(1,20)} |
| long | Matches a 64-bit integer value. | {x:long} |
| max | Matches an integer with a maximum value. | {x:max(10)} |
| maxlength | Matches a string with a maximum length. | {x:maxlength(10)} |
| min | Matches an integer with a minimum value. | {x:min(10)} |
| minlength | Matches a string with a minimum length. | {x:minlength(10)} |
| range | Matches an integer within a range of values. | {x:range(10,50)} |
| regex | Matches a regular expression. | {x:regex(^\d{3}-\d{3}-\d{4}$)} |
[RoutePrefix("Booking")]
public class BookController : Controller {
// Map to 'http://prhythm.com.tw/Booking'
// or 'http://prhythm.com.tw/Booking/Pet'
[Route]
[Route("Pet")]
public ActionResult Pet() {
return View();
}
// Map to 'http://prhythm.com.tw/Booking/Edit'
[Route("Edit")
public ActionResult Edit() {
return View();
}
}
Override route prefix
[RoutePrefix("Booking")]
public class BookController : Controller {
// Override route prefix
// Map to 'http://prhythm.com.tw/Pet'
[Route("~/Pet")]
public ActionResult Pet() {
return View();
}
}
Default route
[RoutePrefix("Booking")]
[Route("action=pet")]
public class BookController : Controller {
// Map to 'http://prhythm.com.tw/Booking'
// or 'http://prhythm.com.tw/Booking/Pet'
public ActionResult Pet() {
return View();
}
// Map to 'http://prhythm.com.tw/Booking/Edit'
public ActionResult Edit() {
return View();
}
}
Route area
[RouteArea("Backend")]
[RoutePrefix("News")]
public class NewsController : Controller {
// Map to 'http://prhythm.com.tw/backend/news'
public ActionResult Index() {
return View();
}
}
[RouteArea("Backend", AreaPrefix = "Admin")]
[RoutePrefix("News")]
public class NewsController : Controller {
// Map to 'http://prhythm.com.tw/admin/news'
public ActionResult Index() {
return View();
}
}
Reference http://sampathloku.blogspot.tw/2013/11/attribute-routing-with-aspnet-mvc-5.html
Reference http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx
