Skip to main content
2 of 4
added 427 characters in body
Caster Troy
  • 721
  • 4
  • 11

Concerns about a somewhat esoteric if statement

I am working on the home page of a website that will have a paginated feed (much like a blog's home page.)

One of the requirements is that when a user navigates to a non-existent page, he or she will be redirected to the last available page. For example, when the user navigates to a non-existent page such as page number 500, they will be redirected to the highest (last available) page number which might be something sensible like 10.

The code to fulfil this requirement easy enough. It looks like this:

public ActionResult Index(int pageNumber = 1) { var posts = repository.All(); var page = posts.Paginate(pageNumber, PageSize); if (page.Count == 0 && pageNumber != 1) { return RedirectToAction("Index", new { pageNumber = page.TotalPageCount }); } return View(page); } 

My problem with this code is the following expression:

page.Count == 0 && pageNumber != 1 

Personally I find this code hard to reason about (and I am the person who wrote it!) How can I make the meaning of this expression clearer? Is there an alternative, more readable way of implementing this logic perhaps?

The condition begins by evaluating whether the requested page has any posts - if the contents of the page are empty, the page effectively does not exist. The condition then checks whether the user is attempting to access the home page (the first page) or not. This check is important because if the database is empty, the user still needs to be able to access the first page - so that the view can display a nice error message.

Caster Troy
  • 721
  • 4
  • 11