Reputation: 319
In my project I have two controllers for a bus service the bus routes and bus route stops. In order to access the route stops you need to select a bus route, if a route hasn't been selected I need to redirect back to the bus route index. I made an If else statement to check for a query string and cookie holding the information.
When I go directly to the bus route stop controller it should throw me back to the bus route list but it doesn't.
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());
}
Upvotes: 0
Views: 1428
Reputation: 218827
I don't think Request.QueryString
in its entirety is ever going to be null. Though a specific value may be null or empty. Something like this:
if (string.IsNullOrWhiteSpace(Request.QueryString["busRouteCode"]))
if (string.IsNullOrWhiteSpace(Request.Cookies["busRouteCode"]))
return View("index", "snBusRoutes");
Update: Semantically it's probably better to perform a redirect than to return the view in this case. The user is making a specific request, but that request directs them somewhere else. They should know they're going somewhere else. Something like this:
if (string.IsNullOrWhiteSpace(Request.QueryString["busRouteCode"]))
if (string.IsNullOrWhiteSpace(Request.Cookies["busRouteCode"]))
return RedirectToAction("index", "controllerName");
Upvotes: 1