I have a View Model that looks like this:
public class SomeViewModel
{
    public SomeViewModel(IEnumerable<SelectListItem> orderTemplatesListItems)
    {
        OrderTemplateListItems = orderTemplatesListItems;
    }
    public IEnumerable<SelectListItem> OrderTemplateListItems { get; set; }
}
I then have an Action in my Controller that does this:
    public ActionResult Index()
    {   
        var items = _repository.GetTemplates();
        var selectList = items.Select(i => new SelectListItem { Text = i.Name, Value = i.Id.ToString() }).ToList();
        var viewModel = new SomeViewModel
            {
                OrderTemplateListItems = selectList
            };
        return View(viewModel);
    }
Lastly my view:
@Html.DropDownListFor(n => n.OrderTemplateListItems, new SelectList(Model.OrderTemplateListItems, "value", "text"), "Please select an order template")
The code works fine and my select list populates wonderfully. Next thing I need to do is set the selected value that will come from a Session["orderTemplateId"] which is set when the user selects a particular option from the list.
Now after looking online the fourth parameter should allow me to set a selected value, so if I do this:
@Html.DropDownListFor(n => n.OrderTemplateListItems, new SelectList(Model.OrderTemplateListItems, "value", "text", 56), "Please select an order template")
56 is the Id of the item that I want selected, but to no avail. I then thought why not do it in the Controller? 
As a final attempt I tried building up my select list items in my Controller and then passing the items into the View:
  public ActionResult Index()
  {   
      var items = _repository.GetTemplates();
      var orderTemplatesList = new List<SelectListItem>();
  foreach (var item in items)
  {
      if (Session["orderTemplateId"] != null)
      {
          if (item.Id.ToString() == Session["orderTemplateId"].ToString())
          {
              orderTemplatesList.Add(new SelectListItem { Text = item.Name, Value = item.Id.ToString(), Selected = true });
          }
          else
          {
              orderTemplatesList.Add(new SelectListItem { Text = item.Name, Value = item.Id.ToString() });
          }
      }
      else
      {
          orderTemplatesList.Add(new SelectListItem { Text = item.Name, Value = item.Id.ToString() });
      }
  }
  var viewModel = new SomeViewModel
      {
          OrderTemplateListItems = orderTemplatesList
      };
  return View(viewModel);
  }
Leaving my View like so:
@Html.DropDownListFor(n => n.OrderTemplateListItems, new SelectList(Model.OrderTemplateListItems, "value", "text"), "Please select an order template")
Nothing! 
Why isn't this working for me?