Ich versuche, eine Dropdown-Liste zu erstellen, mit der Sie angeben können, für welches Unternehmen ein Mitarbeiter arbeitet. Unten ist mein EmployeeViewModel. CompanyId ist ein Datenbankfeld mit eingeschränktem Fremdschlüssel, das mit der Company-Tabelle verknüpft ist.Dropdown-Listenwert scheint es nicht in die Datenbank für MVC zu machen 5
public class EmployeeViewModel
{
public EmployeeViewModel()
{
}
public EmployeeViewModel(Employee Employee, string CompanyName)
{
Initialize(Employee, CompanyName);
}
public EmployeeViewModel(Employee Employee, CliFFEntities db)
{
Initialize(Employee, db.Companies.Find(Employee.CompanyId).Name);
}
private void Initialize(Employee employee, string CompanyName)
{
this.Id = employee.Id;
this.Name = employee.Name;
this.CompanyId = employee.CompanyId;
this.InternalId = employee.InternalId;
this.CompanyName = CompanyName;
}
public int Id { get; set; }
public string Name { get; set; }
public Nullable<int> InternalId { get; set; }
[Display(Name = "Company")]
public int CompanyId { get; set; }
public String CompanyName { get; set; }
//public List<Company> CompanyList { get; set; }
public IEnumerable<SelectListItem> CompanyList { get; set; } //to be set in controller on an as-needed basis
}
Relevante Teil der Mitarbeiter Controller:
// GET: Employees/Create
public ActionResult Create()
{
var evm = new EmployeeViewModel();
evm.CompanyList = new SelectList(db.Companies, "Id", "Name");
return View(evm);
}
Relevante Teil meines erstellen Ansicht:
<div class="form-group">
@Html.LabelFor(m => m.CompanyId)
<div class="col-md-10">
@Html.DropDownListFor(m => m.CompanyId, Model.CompanyList)
@Html.ValidationMessageFor(m => m.CompanyId)
</div>
</div>
Also alles, was scheint gut zu funktionieren. Wenn ich mir die Post-Daten anschaue, wird sogar die CompanyId auf den korrekten Wert gesetzt, der einer Firmen-ID in der Datenbank entspricht.
Wenn ich jedoch den Fremdschlüssel auf der Datenbankseite erzwinge, wird ein Fehler ausgegeben, weil diese CompanyId nicht in den Employee-Datensatz aufgenommen werden kann. Wenn ich die FK-Bedingung abstelle, erscheint die CompanyId einfach als 0.
Was gibt?
können wir Ihre POST-Methode sehen? –
Wie ordnen Sie Ihr Ansichtsmodell dem Datenmodell zu? Wie speichern Sie Ihr Datenmodell? Sie müssen Ihre POST-Methode zeigen –
Danke, Steves. Anscheinend habe ich die POST-Methode nicht beachtet. Ich bin super neu bei MVC! Ich habe eine Antwort auf meine eigene Frage geschrieben. –