Should I have different models and views for no user data than for some user data?
- by Sam Holder
I'm just starting to learn asp.net mvc and I'm not sure what the right thing to do is.
I have a user and a user has a collection of  (0 or more) reminders. I have a controller for the user which gets the reminders for the currently logged in user from a reminder service.  It populates a model which holds some information about the user and the collection of reminders.
My question is should I have 2 different views, one for when there are no reminders and one for when there are some reminders?  Or should I have 1 view which checks the number of reminders and displays different things?  Having one view seems wrong as then I end up with code in my view which says if (Model.Reminders.Count==0){//do something} else {do something else}, and having logic in the view feels wrong.  But if I want to have 2 different views then I'd like to have some code like this in my controller:
[Authorize]
public ActionResult Index()
{
    MembershipUser currentUser = m_membershipService.GetUser();
    IList<Reminder> reminders = m_reminderRepository.GetReminders(currentUser);
    if (reminders.Count == 0)
    {
        var model = new EmptyReminderModel
        {
            Email = currentUser.Email,
            UserName = currentUser.UserName
        };
        return View(model);
    }
    else
    {
        var model = new ReminderModel
                       {
                           Email = currentUser.Email,
                           UserName = currentUser.UserName,
                           Reminders = reminders
                        };
        return View(model);
    }
but obviously this doesn't compile as the View can't take both different types.  So if I'm going to do this should I return a specific named view from my controller, depending on the emptiness of the reminders, or should my Index() method redirect to other actions like so:
[Authorize]
public ActionResult Index()
{
    MembershipUser currentUser = m_membershipService.GetUser();
    IList<Reminder> reminders = m_reminderRepository.GetReminders(currentUser);
    if (reminders.Count == 0)
    {
        return RedirectToAction("ShowEmptyReminders");
    }
    else
    {
        return RedirectToAction("ShowReminders");
    }            
}
which seems nicer but then I need to re-query the reminders for the current user in the ShowReminders action.  
Or should I be doing something else entirely?