cho*_*bo2 7 c# asp.net-mvc automapper
我有一个数据列表,我想绑定到我的ViewModel中的SelectList.
如何使用AutoMapper执行此操作?
Dar*_*rov 17
如果我们假设你有一个模型:
public class FooModel
{
public int ModelId { get; set; }
public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后你可以在FooModel和之间有一个映射SelectListItem:
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)
);
Run Code Online (Sandbox Code Playgroud)
然后当你得到你的时候,IEnumerable<FooModel>你只需将其转换为IEnumerable<SelectListItem>:
IEnumerable<FooModel> models = ...
IEnumerable<SelectListItem> viewModels = Mapper
.Map<IEnumerable<FooModel>, IEnumerable<SelectListItem>>(models);
Run Code Online (Sandbox Code Playgroud)
更现实的例子是拥有以下视图模型:
public class MyViewModel
{
public string SelectedItemId { get; set; }
public IEnumerable<SelectListItem> Items { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
所以现在你的控制器动作可能如下所示:
public ActionResult Index()
{
IEnumerable<FooModel> items = ...
var viewModel = new MyViewModel
{
Items = Mapper.Map<IEnumerable<FooModel>, IEnumerable<SelectListItem>>(items)
};
return View(viewModel);
}
Run Code Online (Sandbox Code Playgroud)
在强类型视图中:
@Html.DropDownListFor(
x => x.SelectedItemId,
new SelectList(Model.Items, "Value", "Text")
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5724 次 |
| 最近记录: |