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”。请检查你的数据库