查询字符串为空时重定向

时间:2015-01-22 20:01:06

标签: c# asp.net web asp.net-mvc-5

在我的项目中,我有两个控制器用于巴士服务,巴士路线和巴士路线停靠。为了访问路线停靠点,您需要选择一条公交路线,如果路线没有被选中,我需要重定向回公交路线索引。我创建了一个If else语句来检查查询字符串和包含信息的cookie 当我直接去公交车路线停车控制器时,它应该把我送回公交车路线列表,但它没有。

public ActionResult Index()
        {

            string busRouteCode = "";
            //checks query string to see if empty
            if (Request.QueryString == null)
            {
                //checks the cookies to see if empty
                if (Request.Cookies["busRouteCode"] == null)
                    { 
                    //if empty returns to bus route controller.
                     return View("index", "snBusRoutes");
                    }
                else
                    {
                        busRouteCode = Response.Cookies["busRouteCode"].Value;    
                    }                             
            }
            else 
            {
              busRouteCode = Request.QueryString["busRouteCode"];  
            }


            var routeStops = db.routeStops.Include(r => r.busRoute).Include(r => r.busStop);
            return View(routeStops.ToList());
        }

1 个答案:

答案 0 :(得分:1)

我认为Request.QueryString 完整永远不会是 null 。虽然特定的可能为null或为空。像这样:

if (string.IsNullOrWhiteSpace(Request.QueryString["busRouteCode"]))
    if (string.IsNullOrWhiteSpace(Request.Cookies["busRouteCode"]))
        return View("index", "snBusRoutes");

更新:在语义上,执行重定向可能比在这种情况下返回视图更好。用户正在发出特定请求,但该请求会将其指向其他位置。他们应该知道他们会去别的地方。像这样:

if (string.IsNullOrWhiteSpace(Request.QueryString["busRouteCode"]))
    if (string.IsNullOrWhiteSpace(Request.Cookies["busRouteCode"]))
        return RedirectToAction("index", "controllerName");