Attribute Routing

  • use a request to route to a controller action method instead of using routing table
Route attribute :
可以指定哪一個 ActionResult 來 Match 這一個 URL, 因為 Route Attribute 是從網站的最源頭開始, 所以並不用加 /, 範例1, 如果 URL 是 https://mysite/product, 那麼這一個 URL 就會 hit Index action, 並回傳 View, 範例 2, 如果 URL 是 https://mysite/product/list, 那麼 URL 就會 hit List() 這一個 action, 並且回傳 List 的 View

Route prefix attribute:
Route prefix attribute 主要是用來定義一整個 class 的 route, 如果 Url 是 https://mysite/product, 那麼這一個 controller 就會是這一個 URL 主要的負責人

Override route prefix:
有時候如果我想要在 ProductController 裡面突然有另外一個 Route 可以跟 ProductController 的 Action 一起坐使用, 那麼我就可以 override 這一個 route, 開頭要用 ~來表示從 root route 開始, 而不是從 /product 開始, 接下來就可以寫要 hit 這一個 action 所需的字, 以這一個例子, 就是 https://mysite/product-list, 雖然裡面並沒有 product 的 controller, 但是仍然可以生存在 product controller 裡面因為我們 override the route prefix

Route attribute for controller defaults:
可以在 class controller 裡面指定 default action

Customer parameters for single route
在 route 裡面, 也可以自己指定要有怎麼樣的 route name, 以這一個例子來看, productName 就可以是我的 url, 相對應的 action 也要接收相同的 parameter, 也就是 productName

Limit the value of parameters(Built-in Constraints)
可以在route 裡面指定 constraints, 這張圖只擷取一部份

Constraint format (optional?)
? 表示可有可無, 是 optional

留言

這個網誌中的熱門文章

ASP.NET Web API - DTOs

Scaffold Identity into the Current Project

Passing data from controller to the view