gpt4 book ai didi

c# - 在 Razor 中设置枚举下拉列表的默认值

转载 作者:太空宇宙 更新时间:2023-11-03 21:19:38 24 4
gpt4 key购买 nike

我正在尝试创建一个项目编辑屏幕,用户可以在其中设置项目的属性 ItemType。理想情况下,当用户返回屏幕时,下拉菜单将显示已与项目关联的 ItemType。

事实上,无论 item.ItemType 是什么,下拉列表都不会在下拉列表中反射(reflect)出来。有没有解决的办法?

作为引用,我目前的代码是:

<div class="form-group">
@Html.LabelFor(model => model.ItemType, new { @class = "control-label col-xs-4" })
<div class="col-xs-8">
@Html.DropDownListFor(model => model.ItemType, (SelectList)ViewBag.ItemType, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.ItemType, String.Empty, new { @class = "text-danger" })
</div>
</div>

ViewBag 设置如下:

var ItemType = Enum.GetValues(typeof(ItemType));
ViewBag.ItemType = new SelectList(ItemType);

最佳答案

如果您使用的是 ASP.NET MVC 5,请尝试只使用 EnumHelper.GetSelectList方法。那么您就不需要 ViewBag.ItemType。

@Html.DropDownListFor(model => model.ItemType, EnumHelper.GetSelectList(typeof(ItemType)), new { @class = "form-control" })

如果没有,您可能需要指定选择列表的数据值和数据文本字段。

var itemTypes = (from ItemType i in Enum.GetValues(typeof(ItemType))
select new SelectListItem { Text = i.ToString(), Value = i.ToString() }).ToList();
ViewBag.ItemType = itemTypes;

那么因为它是一个 IEnumerable<SelectListItem>你需要改变 Actor 阵容。

@Html.DropDownListFor(model => model.ItemType, (IEnumerable<SelectListItem>)ViewBag.ItemType, new { @class = "form-control" })

关于c# - 在 Razor 中设置枚举下拉列表的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31704943/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com