private SelectListGroup GetGroup(object container)
        {
            if (_groups == null)
            {
                return(null);
            }

            var groupName = Eval(container, DataGroupField);

            if (string.IsNullOrEmpty(groupName))
            {
                return(null);
            }

            // We use StringComparison.CurrentCulture because the group name is used to display as the value of
            // optgroup HTML tag's label attribute.
            var group = _groups.FirstOrDefault(g => string.Equals(g.Name, groupName, StringComparison.CurrentCulture));

            if (group == null)
            {
                group = new SelectListGroup()
                {
                    Name = groupName
                };
                _groups.Add(group);
            }

            return(group);
        }
      public CustomerViewModel()
      {
          var germanGroup = new SelectListGroup {Name = "German Cars"};
          var swedishGroup = new SelectListGroup { Name = "Swedish Cars" };

          Vehicles = new List<SelectListItem>
          {
              new SelectListItem
              {
                  Value = "audi",
                  Text = "Audi",
                  Group = germanGroup
              },
              new SelectListItem
              {
                  Value = "mercedes",
                  Text = "Mercedes",
                  Group = germanGroup
              },
              new SelectListItem
              {
                  Value = "saab",
                  Text = "Saab",
                  Group = swedishGroup
              },
              new SelectListItem
              {
                  Value = "volvo",
                  Text = "Volvo",
                  Group = swedishGroup
              }
          };
      }