我想根据2列Id
和Name
的值制作一个下拉列表,所以我希望它像<option value=Id">Name</option>
,而不仅仅是名字。
我可以得到这样的名字,这很好:
var result = from r in db.Categories
select r.Name;
ViewBag.Categories = result;
@Html.DropDownListFor(model => model.Name, new SelectList(ViewBag.Categories), "Select Category")
但我希望有两个ID和名字,我已经说过了,所以我将我的linq更改为:
var result = from r in db.Categories
select new { r.Name, r.Id };
但是我不知道如何使用id和name来下载它?
答案 0 :(得分:0)
您可以在Action
中制作自定义选择列表,并在返回结果之前将其放在ViewBag
中。
ViewBag.Categories = new SelectList(db.Categories, "Id", "Name");
这会根据db.Categories
为您制作一个列表,并将Id
列的值放入&#34;值&#34;和Name
作为textnode
如果要更改textnode,则需要创建自定义列表,例如:
List<Categorie> temp = db.Categories.ToList();
Foreach (var t in temp)
t.Name = String.Format("{0} {1}", t.Id, t.Name);
ViewBag.Categories = new SelectList(temp, "Id", "Name");
在视图中调用时,不要忘记将ViewBag解析为SelectList。
@{
SelectList categories = ViewBag.Categories as SelectList;
}
@Html.DropDownListFor(model => model.Name, categories)