従業員が働く会社を指定できるドロップダウンリストを作成しようとしています。以下は私のEmployeeViewModelです。 CompanyIdは、Companyテーブルにリンクする外部キーの制約付きデータベースフィールドです。ドロップダウンリストの値がMVC 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
}
従業員コントローラの関連部分:
// GET: Employees/Create
public ActionResult Create()
{
var evm = new EmployeeViewModel();
evm.CompanyList = new SelectList(db.Companies, "Id", "Name");
return View(evm);
}
私のビューを作成する関連部分:
<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>
正常に動作するようですだからすべて。実際、投稿データを見ると、データベースの会社IDに対応するCompanyIdを正しい値に設定することさえできます。
しかし、私がデータベース側で外部キーを強制すると、CompanyIdが従業員レコードにそれを作成しないように見えるため、外部キーがエラーになります。 FK制約を無効にすると、CompanyIdは0として表示されます。
何が得られますか?
私はあなたのPOSTメソッドを見ることができますか? –
ビューモデルをデータモデルにどのようにマッピングしていますか?どのようにデータモデルを保存していますか?あなたはあなたのPOSTメソッドを示す必要があります –
ありがとう、スティーブス。どうやら私はPOSTメソッドに注意を払っていませんでした。私はMVCのスーパーです!私は自分自身の質問に答えを投稿しました。 –