0

好的,我已经查看了有关ENUMin使用的不同网站,DropDownLists并且对使用自定义助手将值传递到 ViewBag 的人感到有些困惑,然后再将它们传递给DDL.

http://blogs.msdn.com/b/stuartleeks/archive/2010/05/21/asp-net-mvc-creating-a-dropdownlist-helper-for-enums.aspx

mvc4下拉列表中的枚举值

http://webcache.googleusercontent.com/search?q=cache:http://www.ninjanye.co.uk/2012/01/creating-dropdown-list-from-enum-in.html

我在Html.DropDownList整个网站上使用了各种帮助程序,但以前没有使用ENUMDDL。我宁愿不将它们硬编码到视图中,因为我正在使用switch语句来控制选择选项时发生的情况filter。所以想知道是否有一种简单的方法来实现这一点,而无需创建新的助手来纠正这种情况。

这是我到目前为止所拥有的(减去不必要的代码):

public enum OrderFilter
{
  All,
  Live,
  InProgress,
  Invoiced,
  Outstanding
}

public ActionResult Index(OrderFilter? orderFilter)
{
  ViewBag.FilterOptions = orderFilter;
}

@Html.DropDownList("orderFilter", (IEnumerable<SelectListItem>)ViewBag.FilterOptions, "Filter Options")

如果我像上面那样做,响应是“没有类型为' IEnumerable<SelectListItem>'的 ViewData 项目具有键' orderFilter'”。

我正在寻找类似于以下代码的东西,但不使用自定义助手(如果可能)。

@Html.DropDownList("misc", (IEnumerable<SelectListItem>)ViewBag.Misc)

var users = _userRepository.GetData().Select(u => new SelectListItem
  {
    Value = u.Id.ToString(CultureInfo.InvariantCulture),
    Text = u.Details
  });

 ViewBag.Administrators = users;
4

1 回答 1

0

在对此事进行了广泛调查之后,按照我想要的方式去做这件事并不是一件简单的事情。所以我在辅助类中添加了处理下拉列表中的 ENUM 值。

我看过的一些示例将模型与 ENUM Helper 结合使用,但由于我不需要,我发现下面的视频教程非常有用。下面的视频是我目前的实现,它按我的预期工作。

使用下拉列表绑定枚举类型第 1 部分

使用下拉列表绑定枚举类型第 2 部分

使用下拉列表绑定枚举类型第 3 部分

于 2013-09-25T08:08:44.813 回答