使用MVC和Razor下拉列表

时间:2014-01-19 08:27:08

标签: c# asp.net-mvc

我已经搜索了几天寻找并找出这个问题的多方向下拉列表答案。

我有以下型号

public class Person()
{
   public int Id { get; set; }
   public string Name { get; set; }
   public Gender Gender { get; set; }
}

我试图将Gender作为枚举,字符串,SelectListItem ....(列表继续!)

在我的HTTPGET人剃须刀视图中,我想添加一个新的Person,下拉列表生成一系列性别(男性,女性......)

当用户提交表单时,它会将Person传递给HTTPPOST Person视图,并附加更新的Gender。

我不介意性别是什么类型,只要它可以在控制器和两种方式之间发布。

亲切的问候

1 个答案:

答案 0 :(得分:2)

使用标准@Html.DropDownListFor(...)帮助器确实可以实现这一点。

但是,在创建视图时,您需要将Enum转换为IEnumerable<SelectListItem>才能生效。有关将Enum转换为正确类型的帮助方法的示例,请参阅this answer

如果在代码中使用此hepler方法,则可以执行以下操作:

Html.DropDownListFor(m => m.Gender , ListExtensions.ToSelectList(Model.Gender, m => m.Gender))