我在使用DropDownListFor幫助器在我想用於登錄的窗體中存在困難(安全性不在此處)。 我想,而不是要求用戶鍵入其用戶名,讓他從下拉列表中選擇它。DropDownListFor不直接連接到模型
但我無法設法使ASP.NET自動將我的模型的EmpName屬性設置爲下拉列表中的選定值。
這就是我所做的嘗試:
下面的方法顯示登錄頁面
[HttpGet]
public ActionResult Index()
{
// Retrieving all users from DB
using (var db = new BidManagementContext())
{
var users = from u in db.LOGIN
select u.EmpName;
ViewBag.AllUsers = new SelectList(users.ToList());
return View();
}
}
而這些都是從視圖中的某些行:
<div class="form-group">
@Html.LabelFor(model => model.EmpName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.EmpName, ViewBag.AllUsers as SelectList, new { @class = "form-control" })
</div>
</div>
,如何用我做了一些事情,當ASP.NET嘗試將下拉選定值綁定到模型時,出現錯誤:
「System.InvalidOperationException」類型的異常出現在System.Web.Mvc.dll程序,但在用戶代碼中沒有處理
附加信息:有是有鑰匙'類型的無ViewData的項目「的IEnumerable」 EmpName」。
我不知道這裏做什麼: -/
這意味着'ViewBag.AllUsers'爲空。可能您在提交後返回視圖,但不會重新分配「SelectList」 – 2015-03-13 08:07:03
您是否爲視圖定義了模型類型? – 2015-03-13 08:08:35
@StephenMuecke哦,就是這麼簡單......我覺得有點愚蠢: -/ 您是否會在評論之外回覆帖子,以便我可以將您的答案upvote並標記爲解決方案? – Jeahel 2015-03-13 08:11:40