Asp.net mvc MVC3使用值和名称填充dropdownlist
使用MVC3。我已经有了一个从数据库表中填充的DropDownList 当前仅使用Units.Name填充,但我还想使用Unit.Id(将隐藏在dropdownlist中)填充它,以便在用户选择项目时获取Id,并在单击“创建”按钮(POST方法)时使用它 我需要修改什么才能使它以这种方式工作 我知道这很琐碎,但我是MVC的新手。我尝试了很多可能性,但没有成功 控制器Asp.net mvc MVC3使用值和名称填充dropdownlist,asp.net-mvc,asp.net-mvc-3,http-post,html-select,Asp.net Mvc,Asp.net Mvc 3,Http Post,Html Select,使用MVC3。我已经有了一个从数据库表中填充的DropDownList 当前仅使用Units.Name填充,但我还想使用Unit.Id(将隐藏在dropdownlist中)填充它,以便在用户选择项目时获取Id,并在单击“创建”按钮(POST方法)时使用它 我需要修改什么才能使它以这种方式工作 我知道这很琐碎,但我是MVC的新手。我尝试了很多可能性,但没有成功 控制器 public ActionResult Create() { private BridgeEntities db = new B
public ActionResult Create()
{
private BridgeEntities db = new BridgeEntities();
var query = (from units in db.Units
select units).ToList().OrderBy(q => q.Name);
List<string> listOfUnits = new List<string>();
foreach (var item in query)
{
listOfUnits.Add(item.Name);
}
ViewBag.ListOfUnits = listOfUnits;
return View();
}
我的创建按钮
<button type="submit" class = "btn btn-success">
<i class="icon-plus icon-white"></i> Create
</button>
创造
提前谢谢
ViewBag.ListOfUnits = (from units in db.Units select units)
.ToList().OrderBy(q => q.Name)
.Select(s => new SelectListItem
{
Text = s.Name,
Value = s.Id// or s.ID , what property does your model have...
};
更新:
不经意间:
// Select Ids to exclude from list
IQueryable<int> exclude = db.DeprecatedUnits.Select(p => p.UnitID);
// Select units for selectlist, ignore the ids which are in exclude list
var units = db.Units.Where(q => !exclude.Contains(q.Id)).OrderBy(q => q.Name).ToList();
// Create the selectlist
ViewBag.ListOfUnits = new SelectList(units,"Id","Name");
//选择要从列表中排除的ID
IQueryable exclude=db.DeprecatedUnits.Select(p=>p.UnitID);
//为selectlist选择单位,忽略排除列表中的ID
var units=db.units.Where(q=>!exclude.Contains(q.Id)).OrderBy(q=>q.Name.ToList();
//创建选择列表
ViewBag.ListOfUnits=新选择列表(单位,“Id”,“名称”);
排除那些未包含在另一个表中(例如DeprecatedUnits)且被外键引用的单位的语法是什么?。例如:我想显示所有Unit.Name,这些Unit的UnitID不在deprecatedUnit表中。更好的方法是使用带有单元列表的模型。ViewBag可以使用,但不推荐使用。谢谢@sormii。最后,我可以让它与您的代码一起工作,但只需稍加修改。我使用了var exclude=db.DeprecatedUnits.Select(p=>p.UnitID);相反,可液化的除外
ViewBag.ListOfUnits = new SelectList(db.Units.OrderBy(q => q.Name).ToList(),
"Id",
"Name");
// Select Ids to exclude from list
IQueryable<int> exclude = db.DeprecatedUnits.Select(p => p.UnitID);
// Select units for selectlist, ignore the ids which are in exclude list
var units = db.Units.Where(q => !exclude.Contains(q.Id)).OrderBy(q => q.Name).ToList();
// Create the selectlist
ViewBag.ListOfUnits = new SelectList(units,"Id","Name");