簡體   English   中英

如何使用AutoMapper將List映射到ASP.NET MVC中的SelectList?

[英]How do I map a List to a SelectList in ASP.NET MVC using AutoMapper?

我有一個數據列表,我想綁定到我的ViewModel中的SelectList。

如何使用AutoMapper執行此操作?

如果我們假設你有一個模型:

public class FooModel
{
    public int ModelId { get; set; }
    public string Description { get; set; }
}

然后你可以在FooModelSelectListItem之間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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM