如何将@ Html.EnumDropDownListFor中的选定值传递给我的控制器? 实际上我并不想将所选值作为字符串传递,但我想在所选项目的枚举类中传递相应的数字。
我在下面的类(Controller和View)中对我的代码进行了评论。
枚举
public enum Leerjaar
{
[Display(Name="Eerste leerjaar")]
eerste = 1,
[Display(Name = "Tweede leerjaar")]
tweede = 2,
[Display(Name = "Derde leerjaar")]
derde = 3,
[Display(Name = "Vierde leerjaar")]
vierde = 4,
[Display(Name = "Vijfde leerjaar")]
vijfde = 5,
[Display(Name = "Zesde leerjaar")]
zesde = 6
}
视图模型
public class GraadIndexViewModel
{
public Leerjaar leerjaar { get; set; }
public GraadIndexViewModel(Leerjaar leerjaar){
this.leerjaar = leerjaar;
}
}
控制器
public class GraadController : Controller
{
public ActionResult Index()
{
//Passing the Enum to my ViewModel
return View(new GraadIndexViewModel(new Leerjaar()));
}
[HttpPost]
//And here I want to receive the selected value from the enumdropdown
//in order to set my 'Leerjaar' field.
public ActionResult Index(GraadIndexViewModel g)
{
Leerjaar leerjaar = ???
}
}
查看
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Kies uw leerjaar</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
@*Should I add something like new {leerjaarID = ???} here ?*@
@Html.EnumDropDownListFor(model => model.leerjaar, "Kies uw leerjaar")
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Ga verder" class="btn btn-default" />
</div>
</div>
</div>
答案 0 :(得分:1)
当您使用html.SomethingFor( m => m.Property )
帮助程序时,该字段绑定到该模型的属性,并在ASP.NET MVC处理POST提交时由模型绑定程序设置:
[HttpPost]
public ActionResult Index(GraadIndexViewModel g)
{
Leerjaar leerjaar = g.leerjaar;
}
要获取枚举值的数值,只需转换为int
(或枚举的支持类型):
[HttpPost]
public ActionResult Index(GraadIndexViewModel g)
{
Int32 leerjaarInt = (Int32)g.leerjaar;
}