title: Select Tag Helper in ASP.NET Core MVC comes empty after post when need to go back to view
body: <p>Well as said the description, when I pass data from the get of my method to the view everything its fine, but, when i hit save button and it goes to the server to validate if model is valid, if certanly its valid everyting its ok, but, if the model is not valid he go back to the same view (as is suppouses to do), but it lost the collection when it goes to the server, I consider is so stupid fill it again, so, Theres any way to fill the model only one tyme for the select list?.</p>
  
  <p>I have those actions</p>
  
  <pre><code>public IActionResult Create()
  {
      var types = _context.Types;
  
      var vm = new EventViewModel
      {
          Types = new SelectList(types, "Id", "Name")
      };
  
      return View(vm);
  }
  
  [Authorize]
  [HttpPost]
  public IActionResult Create(EventViewModel vm)
  {
      //when it enter here **Types** comes empty  
      //if is not valid
      if (!ModelState.IsValid)
      {
              //var types = _context.Types;
              //**I WANT TO AVOID THIS**
              //vm.Types = new SelectList(types, "Id", "Name", vm.TypeId);
              return View(vm);
      }
  
      var ev = new Event
      {
          DateTime = vm.GetDateTime(),
          TypeId = vm.TypeId,
          Venue = vm.Venue,
          CoachId = User.FindFirstValue(ClaimTypes.NameIdentifier)
      };
  
      _context.Add(ev);
  
      _context.SaveChanges();
      return RedirectToAction("Index", "Home");
  
  }
  </code></pre>
  
  <p>This is my view</p>
  
  <pre><code>@model EcCoach.Web.ViewModels.EventViewModel
  @{
      ViewData["Title"] = "Create";
  }
  
  &lt;h1&gt;Create&lt;/h1&gt;
  &lt;form asp-action="Create"&gt;
      &lt;p class="alert alert-info"&gt;
          All fields are &lt;strong&gt;required&lt;/strong&gt;
      &lt;/p&gt;
  
      &lt;div class="form-group"&gt;
          &lt;label asp-for="Venue"&gt; &lt;/label&gt;
          &lt;input asp-for="Venue" class="form-control" placeholder="Enter a 
          venue" autofocus="autofocus"&gt;
          &lt;span asp-validation-for="Venue"&gt;&lt;/span&gt;
      &lt;/div&gt;
      &lt;div class="form-group"&gt;
          &lt;label asp-for="Date"&gt; &lt;/label&gt;
          &lt;input asp-for="Date" class="form-control" placeholder="eg 
          15/12/2017"&gt;
      &lt;/div&gt;
      &lt;div class="form-group"&gt;
          &lt;label asp-for="Time"&gt; &lt;/label&gt;
          &lt;input asp-for="Time" class="form-control"&gt;
      &lt;/div&gt;
      &lt;div class="form-group"&gt;
          &lt;label asp-for="TypeId"&gt; &lt;/label&gt;
          &lt;select asp-for="TypeId" asp-items="@Model.Types" class="form- 
              control"&gt;
              &lt;option value="0"&gt;Choose One&lt;/option&gt;
          &lt;/select&gt;          
      &lt;/div&gt;
      &lt;button type="submit" class="btn btn-primary"&gt;
          Save
      &lt;/button&gt;
  
  &lt;/form&gt;
  </code></pre>
  
  <p>And finally this is my ViewModel</p>
  
  <pre><code>    public class EventViewModel
      {
          [Required]
          [FutureDate]
          public string Date { get; set; }
  
          [Required]
          [ValidTime]
          public string Time { get; set; }
  
          [Required]
          public byte TypeId { get; set; }
  
          [Required]
          [StringLength(5)]
          public string Venue { get; set; }
  
          public DateTime GetDateTime()
          {
              return DateTime.Parse($"{Date} {Time}");
          }
  
          public IEnumerable&lt;SelectListItem&gt; Types { get; set; }
      }
  </code></pre>