2020-08-04 19:09

利用 redirect 跳轉到 預設頁 或 預設查詢

在網站開發有一些技巧可以增加後續的維護性,利用重導向來做預設內容的處裡,這樣可以統一集中的進行控制。

預設頁面最常會因為業務的策略因素進行調整,這時候散落在各地的連結都要調整,費工又容易漏。

預設查詢這個麻煩點在於參數會變動,散落在各地的連結一樣是個麻煩。


但重導向這種方式也是有損失的,將會多一個 HTTP 請求,這對 UI 反應速度很要求的狀況來說,並不是一個好方法,可能就要改用統一網址管理來處理。


利用 MVC 的 Index() 來控制預設頁面,Index 將不會有實體頁面,而是用來進行重導向。
public class UserController : Controller
{
    public ActionResult Index()
    {
        return RedirectToAction(nameof(List));
    }

    public ActionResult List(DateTime? date)
    {
        //...
        return View();
    }

}


判斷 QueryString 為空時,進行預設查詢的重導向,以 QueryString 為判斷點的好處是有時候就是要查詢全部資料,這樣就不會被預設查詢卡到。
public class UserController : Controller
{
    public ActionResult List(DateTime? date)
    {
        if (Request.QueryString.Count == 0)
        {
            RedirectToAction(nameof(List), new 
            { 
                date = DateTime.Today.ToString("yyyy-MM-dd") 
            });
        }

        //...
        return View();
    }


}