添加/更新IEnumerable列表
问题描述:
我只想问如何通过/更新IEnumerable列表,将用于显示下拉菜单,因为我缺少一组行以添加它并更新enumlist
,以便我只能获取文本和值是Arrived
和Completed
。这是我在我的模型在我的控制器添加/更新IEnumerable列表
public enum DeliveryPermitStatus
{
Arrived = 1,
Approved = 2,
Cancelled = 3,
Completed = 4,
Submitted = 5
}
代码,所以我可以添加可枚举列表中的过滤enumlist
和我缺少代码viewbag更新enumlist
将用于在下拉列表显示
var enumlist = Enum.GetValues(typeof(DeliveryPermitStatus)).Cast<DeliveryPermitStatus>().Select(v => new SelectListItem
{
Text = v.ToString(),
Value = ((int)v).ToString()
});
if (User.IsInRole(StaticRoleNames.Admin)) //your condition here
{
foreach(var item in enumlist)
{
if(item.Text == "Arrived" || item.Text == "Completed")
{
//Missing Code Here
}
}
}
ViewBag.enumlist = enumlist;
答
我想你要问/想做的是将ViewBag.enumlist
编辑为基于用户角色的缩减值集合吗?如果是这样,那么你可以过滤并分配你的if语句里面的列表,并放弃foreach循环:
var enumlist = Enum.GetValues(typeof(DeliveryPermitStatus)).Cast<DeliveryPermitStatus>().Select(v => new SelectListItem
{
Text = v.ToString(),
Value = ((int)v).ToString()
});
if (User.IsInRole(StaticRoleNames.Admin)) //your condition here
{
ViewBag.enumlist = enumlist.Where(t => t.Text == "Arrived" || t.Text == "Completed");
}
,或者,如果你需要保持foreach循环,那么你需要创建一个单独的列表跟踪的枚举列表中的“可用值”的:
var enumlist = Enum.GetValues(typeof(DeliveryPermitStatus)).Cast<DeliveryPermitStatus>().Select(v => new SelectListItem
{
Text = v.ToString(),
Value = ((int)v).ToString()
});
List<SelectListItem> availableOptions = new List<SelectListItem>();
if (User.IsInRole(StaticRoleNames.Admin)) //your condition here
{
foreach(var item in enumlist)
{
if(item.Text == "Arrived" || item.Text == "Completed")
{
availableOptions.Add(item);
}
}
}
ViewBag.enumlist = availableOptions;
答
不能元素添加到IEnumerable,但你可以很容易地从它那里得到一个列表。 只需在分配给var enumlist之前调用ToList()。
现在你可以添加元素,它(小心,而枚举它不添加元素)
看起来似是而非的选项+1,否则要求不是从问题本身 –
这很清楚肯定是我正在寻找!谢谢你,先生! –