ExamIDを含むDropDownListを含むデータベースのエントリのScaffolded Createビューがあります。 ここでの考え方は、DBの[登録]テーブルに新しいレコードを作成することです。ここで、登録にはExam(ExamID)のGUIDが含まれています。 リストには現在、試験のGUIDが入力されています。ASP.NET MVCドロップダウンリストに外部キーを設定する
試験には名前はありませんが、DB(CourseID)の外部キーを介して別のテーブルにコース(名前を持っています)にリンクされています。
私が必要とするのは、試験に関連付けられたコース名が入力されたリストですが、新しいレコードを作成するときに正しいExamIDが解析されます。
私はC#/ ASP.NETの初心者ですから、私はViewBagsとラムダ式を使っていませんでした。ある時点では、コース用の新しいViewBarを作成し、それをDropdownListに解析することによってそれを持っていると思っていましたが、CourseIDが別のテーブルのExamIDとしてCourseIDを保存したいので、キーではありません。
コントローラー:
// GET: Registrations/Create
public ActionResult Create()
{
ViewBag.ExamId = new SelectList(db.Exams, "Id", "Id");
return View();
}
// POST: Registrations/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,ExamId,StudentId,Deleted,TimeStamp")] Registration registration)
{
if (ModelState.IsValid)
{
registration.Id = Guid.NewGuid();
registration.StudentId = User.Identity.GetUserId();
registration.TimeStamp = DateTime.Now;
db.Registrations.Add(registration);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.StudentId = new SelectList(db.AspNetUsers, "Id", "Firstname", registration.StudentId);
ViewBag.ExamId = new SelectList(db.Exams, "Id", "Name", registration.ExamId);
return View(registration);
}
ビュー:
<div class="form-horizontal">
<h4>Kies een tentamen</h4>
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.ExamId, "Vak", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("ExamId", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.ExamId, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<div>
<input type="submit" value="Schrijf in" class="btn btn-primary"/>
</div>
</div>
</div>
</div>
私は後だビットがビューにExamIDからリンクされているコース名の代わりのGUIDを示しています。
:へ
変更多くの、多くの、多くの、1対1? – JamieD77
@ JamieD77それはコース1です--- *試験の関係。 –
どのような試験であれば、どのような試験を受けるのですか?どのコースにも1つの試験だけがある場合を除き、同じコース名が複数回ドロップダウンで表示されます – JamieD77