Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC3使用值和名称填充dropdownlist_Asp.net Mvc_Asp.net Mvc 3_Http Post_Html Select - Fatal编程技术网

Asp.net mvc MVC3使用值和名称填充dropdownlist

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

使用MVC3。我已经有了一个从数据库表中填充的DropDownList

当前仅使用Units.Name填充,但我还想使用Unit.Id(将隐藏在dropdownlist中)填充它,以便在用户选择项目时获取Id,并在单击“创建”按钮(POST方法)时使用它

我需要修改什么才能使它以这种方式工作

我知道这很琐碎,但我是MVC的新手。我尝试了很多可能性,但没有成功

控制器

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");