[英]How do I map a List to a SelectList in ASP.NET MVC using AutoMapper?
如果我們假設你有一個模型:
public class FooModel
{
public int ModelId { get; set; }
public string Description { get; set; }
}
然后你可以在FooModel
和SelectListItem
之間FooModel
一個映射:
Mapper
.CreateMap<FooModel, SelectListItem>()
.ForMember(
dest => dest.Value, opt => opt.MapFrom(src => src.ModelId.ToString())
)
.ForMember(
dest => dest.Text, opt => opt.MapFrom(src => src.Description)
);
然后當你獲得IEnumerable<FooModel>
你只需將它轉換為IEnumerable<SelectListItem>
:
IEnumerable<FooModel> models = ...
IEnumerable<SelectListItem> viewModels = Mapper
.Map<IEnumerable<FooModel>, IEnumerable<SelectListItem>>(models);
更現實的例子是擁有以下視圖模型:
public class MyViewModel
{
public string SelectedItemId { get; set; }
public IEnumerable<SelectListItem> Items { get; set; }
}
所以現在你的控制器動作可能如下所示:
public ActionResult Index()
{
IEnumerable<FooModel> items = ...
var viewModel = new MyViewModel
{
Items = Mapper.Map<IEnumerable<FooModel>, IEnumerable<SelectListItem>>(items)
};
return View(viewModel);
}
在強類型視圖中:
@Html.DropDownListFor(
x => x.SelectedItemId,
new SelectList(Model.Items, "Value", "Text")
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.