Enable attribute route
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}$)} |
Route prefix
[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