C# 如何使用(IEnumerable<;SelectListItem>;)ViewBag在数据库中显示保存的项目
我想显示保存在数据库中的事件,并显示包含所有可用事件的下拉列表,以从中选择项目 控制器:C# 如何使用(IEnumerable<;SelectListItem>;)ViewBag在数据库中显示保存的项目,c#,html,asp.net-mvc-4,C#,Html,Asp.net Mvc 4,我想显示保存在数据库中的事件,并显示包含所有可用事件的下拉列表,以从中选择项目 控制器: public ActionResult Edit(long? id) { if (id == null) { return new HttpStatusCodeResult(HttpStatusCode.BadRequest); } TempData["CurrentPerformanceId"] = id
public ActionResult Edit(long? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
TempData["CurrentPerformanceId"] = id;
Performance performance = db.Performances.Find(id);
if (performance == null)
{
return HttpNotFound();
}
var performancePerformers = performance.PerformerPerformances.Select(x => x.PerformerId).ToList();
var availablePerformers = db.Performers.Where(s => !performancePerformers.Contains(s.PerformerId)).ToList();
CustomPerformancePerformersModel cppm = new CustomPerformancePerformersModel();
cppm.performanceObj = performance;
cppm.AvailablePerformers = availablePerformers.Select(x => new SelectListItem
{
Text = x.Name,
Value = x.PerformerId.ToString()
}).ToList();
//Events Dropdown autocomplete
var availableEvnets = db.Events.AsNoTracking().Where(s => s.Deleted == false).ToList();
var EventDropDownList = new List<SelectListItem>();
foreach (var item in availableEvnets)
{
EventDropDownList.Add(new SelectListItem { Text = item.Name, Value = item.EventId.ToString() });
}
//Venues Dropdown autocomplete
var availableVenue = db.Venues.AsNoTracking().Where(s => s.Deleted == false).ToList();
var VenueDropDownList = new List<SelectListItem>();
foreach (var item in availableVenue)
{
VenueDropDownList.Add(new SelectListItem { Text = item.Name, Value = item.VenueId.ToString() });
}
ViewBag.EventDropDownList = EventDropDownList;
ViewBag.VenueDropDownList = VenueDropDownList;
ViewBag.EventId = new SelectList(db.Events, "EventId", "Name", performance.EventId);
ViewBag.VenueId = new SelectList(db.Venues, "VenueId", "Name", performance.VenueId);
return View(performance);
}
公共操作结果编辑(长?id)
{
if(id==null)
{
返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
TempData[“CurrentPerformanceId”]=id;
性能=db.Performances.Find(id);
if(性能==null)
{
返回HttpNotFound();
}
var performancePerformers=performance.PerformerPerformances.Select(x=>x.PerformerId.ToList();
var availablePerformers=db.Performers.Where(s=>!performancePerformers.Contains(s.PerformerId)).ToList();
CustomPerformancePerformerModel cppm=新的CustomPerformancePerformerModel();
cppm.performanceObj=性能;
cppm.AvailablePerformers=AvailablePerformers.Select(x=>newselectListItem
{
Text=x.名称,
值=x.PerformerId.ToString()
}).ToList();
//事件下拉菜单自动完成
var availableEvnets=db.Events.AsNoTracking().Where(s=>s.Deleted==false.ToList();
var EventDropDownList=新列表();
foreach(AvailableeEvNets中的var项)
{
添加(新的SelectListItem{Text=item.Name,Value=item.EventId.ToString()});
}
//场馆下拉菜单自动完成
var availableVenue=db.victions.AsNoTracking().Where(s=>s.Deleted==false.ToList();
var VenueDropDownList=新列表();
foreach(AvailableEvenue中的var项目)
{
添加(新的SelectListItem{Text=item.Name,Value=item.VenueId.ToString()});
}
ViewBag.EventDropDownList=EventDropDownList;
ViewBag.VenueDropDownList=VenueDropDownList;
ViewBag.EventId=新选择列表(db.Events,“EventId”,“Name”,performance.EventId);
ViewBag.VenueId=新的选择列表(db.victions,“VenueId”,“Name”,performance.VenueId);
返回视图(性能);
}
代码:
<div class="form-group">
@Html.LabelFor(model => model.EventId, "Event", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownListFor(model => model.EventId, (IEnumerable<SelectListItem>)ViewBag.EventDropDownList, htmlAttributes: new { @class = "form-control select2" })
@Html.ValidationMessageFor(model => model.EventId, "", new { @class = "text-danger" })
</div>
@LabelFor(model=>model.EventId,“Event”,htmlAttributes:new{@class=“controllabel col-md-2”})
@Html.DropDownListFor(model=>model.EventId,(IEnumerable)ViewBag.EventDropDownList,htmlAttributes:new{@class=“form control select2”})
@Html.ValidationMessageFor(model=>model.EventId,“,new{@class=“text danger”})
生成此下拉列表时,如果数据库中保存了另一个事件,则始终以“Amr DIB”事件开始
ViewBag.EventId = new SelectList(db.Events, "EventId", "Name", performance.EventId);
ViewBag.VenueId = new SelectList(db.Venues, "VenueId", "Name", performance.VenueId);
这两行代码重写了保存在数据库中的EventId,并将其作为列表中的首选项
谢谢大家请显示控制器的代码。您在ViewBag.EventDropDownList中有什么?对不起,我也编辑了我的问题,模型来自哪里?你确定它的EventId属性包含数据库中的值吗?这是我的错误@NineBerry先生我更新了所有code@amalmansour我非常确定这个事件在数据库中的名称是“Amr Diab”。请检查你的数据库