2017-02-23 2 views
1

http://i.imgur.com/uDWL0YE.pngkann nicht Element in Dropdown-Menü auswählen

Ich verfolge den Full-Stack .NET Kurs auf Plural und alles bis jetzt läuft gut ist. Wenn ich als Benutzer angemeldet bin und versuche, der Datenbank einen Gig hinzuzufügen, kann ich im Drop-down-Menü kein Genre auswählen und kann den Gig nicht hinzufügen. Ich kann die Genres gut sehen, ich kann einfach keine auswählen. Hier

ist der Code für die Drop-down in der Ansicht erstellen:

<div class="form-group"> 
    @Html.LabelFor(m => m.Genre) 
    @Html.DropDownListFor(m => m.Genre, new SelectList(Model.Genres, "Id", "Name"), "", new { @class = "form-control" }) 
    @Html.ValidationMessageFor(m => m.Genre) 
</div> 

Das ist meine Gig-Klasse im Viewmodel Ordner:

public class GigFormViewModel 
{ 
    [Required] 
    public string Venue { get; set; } 

    [Required] 
    [FutureDate] 
    public string Date { get; set; } 

    [Required] 
    [ValidTime] 
    public string Time { get; set; } 

    [Required] 
    public byte Genre { get; set; } 

    [Required] 
    public IEnumerable<Genre> Genres { get; set; } 

    public DateTime GetDateTime() 
    { 
     return DateTime.Parse(string.Format("{0} {1}", Date, Time)); 
    } 
} 

Und das ist der Code für die Httppost Aktion in der Steuerung:

[Authorize] 
    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Create(GigFormViewModel viewModel) 
    { 
     if (!ModelState.IsValid) 
     { 
      viewModel.Genres = _context.Genres.ToList(); 
      return View("Create", viewModel); 
     } 
     var gig = new Gig() 
     { 
      ArtistId = User.Identity.GetUserId(), 
      DateTime = viewModel.GetDateTime(), 
      GenreId = viewModel.Genre, 
      Venue = viewModel.Venue 
     }; 
     _context.Gigs.Add(gig); 
     _context.SaveChanges(); 
     return RedirectToAction("Index", "Home"); 
    } 

ich nicht herausfinden kann, warum ich nicht in der Lage bin genr wählen e und speichern Sie es in der Datenbank. Es gibt mir keinen Validierungsfehler, wenn ich auf "Speichern" klicke, aber die Seite neu lädt. Lassen Sie mich wissen, wenn Sie weitere Informationen benötigen.

Antwort

1

Sie sollten Genres als Required auf dem ViewModel nicht markieren, da dies nur eine unterstützende Liste ist, die Sie beim Anzeigen der Ansicht benötigen. Wenn das Formular in der Ansicht übergeben wird, hat diese Eigenschaft jedoch keinen Wert, sodass die Validierung fehlschlägt.

+0

Danke, ich konnte jetzt einen Gig speichern, aber ich bin immer noch una Das ausgewählte Genre in der Dropdownliste bleibt aktiviert, wenn Sie darauf klicken. Ich werde Ihre Antwort trotzdem als akzeptiert markieren. – Leth

+0

@ user1696992 Werfen Sie einen Blick auf http://stackoverflow.com/questions/40384865/html-dropdownlistfor-always-displays-blank-even-with-a-list-item-selected - Vielleicht haben Sie das gleiche Problem mit der CSS ? – NineBerry

+0

Danke, das hat es gelöst. – Leth

1

das Problem markierte Sie benötigt in Genres

[Required] 
    public IEnumerable<Genre> Genres { get; set; } 

in Dropdownlist

@Html.DropDownListFor(m => m.Genre, new SelectList(Model.Genres, "Id", "Name"), "", new { @class = "form-control" }) 

m.Genre wird der ausgewählte Wert zurückgeben, die als required eingestellt werden sollte, aber new SelectList(Model.Genres, "Id", "Name") tut nur eine Reise, die Daten zu füllen es gibt die Daten nicht zurück zu modal

Verwandte Themen