在我看來,我有:ViewBag的SelectList不設置選定值
<tr class="form-group">
<th><label class="control-label">Technician</label></th>
<td>
@Html.DropDownListFor(model => model.UserID, (IEnumerable<SelectListItem>)ViewBag.TechnicianID)
@Html.ValidationMessageFor(model => model.UserID)
</td>
</tr>
而且在我的控制器:
public ActionResult Edit(int? id) {
var salescall = (id != null) ? db.SalesCalls.Find(id) : new SalesCall();
if (salescall == null) {
return HttpNotFound();
}
ViewBag.CompanyID = new SelectList(db.Companies, "CompanyID", "Name", salescall.CompanyID);
var technicians = db.UserProfiles.Select(t => new {
ID = t.ID,
Name = t.FirstName + " " + t.LastName,
}).OrderBy(t => t.Name);
var techID = CurrentUser.UserID(User);
ViewBag.TechnicianID = new SelectList(technicians, "ID", "Name", techID);
return View(salescall);
}
當我調試,該值被傳遞給techID是正確的值,並該值確實存在於下拉菜單中,但出於某種原因,它未被選中。我該如何做這項工作?
確保有在爲'techID'或相應價值的末尾沒有多餘的空間下拉列表中的值。使用'trim()'可以追蹤任何可能存儲在數據庫中的額外字符。 – 2014-10-01 16:13:34
@DennisR傳遞的值是整數類型。另外,當我手動輸入數字而不是通過techID變量傳遞時,它仍然不起作用。例如。 ViewBag.TechnicianID = new SelectList(技術人員,「ID」,「姓名」,38); – mdk09 2014-10-01 16:37:08
好的,你可以註釋掉@@ Html.ValidationMessageFor(model => model.UserID)這行嗎?看看你的原始代碼會發生什麼? – 2014-10-01 16:44:12