Catch-all 路由用於啟用客戶端路由

在 url 中對單頁應用程式(SPA)的狀態進行編碼是一種很好的做法:

my-app.com/admin-spa/users/edit/id123

這允許儲存和共享應用程式狀態。
當使用者將 url 放入瀏覽器的位址列並點選進入伺服器時,必須忽略所請求 URL 的客戶端部分。如果你將 SPA 作為渲染的 Razor 檢視(呼叫控制器操作的結果)而不是靜態 html 檔案提供,則可以使用 catch-all 路徑:

public class AdminSpaController
{
    [Route("~/admin-spa/{clienSidePart*}")]
    ActionResult AdminSpa()
    {
        ...
    }
}

在這種情況下,伺服器只返回 SPA,然後根據路由初始化自己。這種方法更靈活,因為它不依賴於 url-rewrite 模組。