在我的mvc4应用程序中,我在页面上设置了下拉列表,如下所示
在AccountModel.cs的HttpGet Register方法中,我使用此代码初始化其数据
public ActionResult Register()
{
MyModel mm=new MyModel();
mm.mydropdown=new []
{
new SelectListItem{Value="value", Text="text"}
////...
};
}
仅当此页面加载时,该代码才会运行;但是我可以在任何地方插入必须编译的代码片段并让我的mydropdown
始终在应用程序中初始化,这样我就不必在[HttpPost]
方法中重写它了吗?
[更新]
这是mymodel
类
public class Register
{
[Required(ErrorMessage="Option is required")]
public string option;
public IEnumerable<SelectListItem> Options;
}
在我的情况下,我在cshtml中使用option
,就像这样
@Html.DropDownListFor(m=>m.option, Model.Options,"Select an item")
在HttpPost
注册方法中,我必须重新初始化选项,否则我将遇到错误“Option is of type string but it must be IEnumerable<SelectListItem> instead
”否则
答案 0 :(得分:1)
你可以扩展IEnumerable<SelectListItem>
并像这样做
public class MyDropDownList : IEnumerable<SelectListItem>
{
public MyDropDownList()
{
SelectedListItem item = new SelectListItem{Value="value", Text="text"};
this.Add(item);
}
}
或者,您可以将其写入MyModel
public class Register
{
[Required(ErrorMessage="Option is required")]
public string option;
public IEnumerable<SelectListItem> Options;
public Register()
{
this.Options = new []
{
new SelectListItem{Value="value", Text="text"}
////...
};
}
}
public ActionResult Register()
{
Register mm = new Register();
}