Ich habe eine Kundenklasse mit einer Eigenschaft Gender. Ich habe eine Liste von Geschlechtstyp erstellt, die ID-Nummer und Geschlechtstyp enthält. Wenn das Formular eingereicht wird, erhalte ich null Wert.DropDownlistfor gibt Nullwert zurück
Ansicht
@model MovieRentals.ViewModel.CustomerView
<div class="form-group">
<h4>@Html.LabelFor(l => l.Customer.BirthDate)</h4>
@Html.DropDownListFor(l => l.CustomerGender, new SelectList(Model.CustomerGender, "GenderId", "GenderType"), "Select Gender", new { @class = "form-control" })
</div>
Modell
public class CustomerView
{
public IEnumerable<MembershipType> MembershipTypes{ get; set; }
public Customer Customer { get; set; }
public List<GenderClass> CustomerGender{ get; set; }
}
public class GenderClass
{
public int GenderId { get; set; }
public string GenderType { get; set; }
}
-Controller
public ActionResult New()
{
var MembershipTy = _context.MemebershipType.ToList();
var ViewModel = new CustomerView();
ViewModel.CustomerGender = new List<GenderClass>()
{
new GenderClass(){ GenderId = 1, GenderType = "Male"},
new GenderClass() { GenderId = 2, GenderType = "Female"}
};
ViewModel.MembershipTypes = MembershipTy;
return View(ViewModel);
}
Da Sie dieselbe Eigenschaft wie Datenquelle verwenden und die Auswahl beibehalten. Sie benötigen eine nicht aufzählbare Eigenschaft, die den ausgewählten Wert enthält. – CodeCaster
Sie können eine '
Das select-Tag' name' -Attribut muss mit einer Eigenschaft in Ihrem Objekt übereinstimmen. Erst dann wird der Wert ordnungsgemäß vom MVC-Framework gebunden. Überprüfen Sie daher, welchen Namen Ihr ausgewähltes Tag hat und stellen Sie sicher, dass Sie in Ihrem Modell den gleichen Namen haben. –