我有一個腳手架爲我的數據庫中的一個條目創建視圖,其中包含一個包含ExamID的DropdownList。 這裏的想法是在DB中的註冊表中創建一個新記錄,其中註冊包含考試的GUID(ExamID)。 該列表當前由來自考試的GUID填充。ASP.NET MVC使用外鍵填充DropdownList
考試本身沒有名字,但通過數據庫(CourseID)中的外鍵鏈接到另一個表中的課程(名稱不同)。
我需要的是一個填充了與考試相關的課程名稱的列表,但在創建新記錄時仍會解析正確的ExamID。
由於我是C#/ ASP.NET的新手,我一直在關注ViewBags和lambda表達式,但都沒有工作。有一次,我以爲我通過製作一個新的ViewBar for Courses並將其解析到DropdownList中,但自然會導致數據庫錯誤,因爲它希望將CourseID中的CourseID作爲另一個TestID保存在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>
位我後顯示一個鏈接課程名稱代替GUID從ExamID在視圖中。
你說考試是由外鍵鏈接到課程,這是一個以許多,多對多,一對一? – JamieD77
@ JamieD77它是一門課程1 --- *考試關係。 –
如果您的考試成績爲1對多,您將如何知道您正在參加哪個考試..除非每門課程只有一門考試,否則您只會在下拉菜單 – JamieD77