Боюсь, что у вас есть серьезные проблемы с вашими моделями.Кажется, что это AdminVATDTO
предназначено как модель представления, при условии, что у него есть некоторые атрибуты форматирования, но модели представления никогда не должны быть производными от моделей.Это неправильный дизайн.
Вот правильный дизайн:
Модель предметной области (не меняя это, поскольку я предполагаю, что она уже существует):
public class AdminVAT : IAdminDecimal
{
public virtual int Id { get; set; }
public virtual int Code { get; set; }
public virtual decimal Value { get; set; }
}
Просмотр моделей:
public class AdminVATViewModel
{
public int Id { get; set; }
public string Value { get; set; }
}
public class MyViewModel
{
public string SelectedVAT { get; set; }
public IEnumerable<AdminVATViewModel> ListVAT { get; set; }
}
затем определите отображение между AdminVAT
и AdminVATViewModel
:
Mapper
.CreateMap<AdminVAT, AdminVATViewModel>()
.ForMember(
dest => dest.Value,
opt => opt.MapFrom(src => src.Value.ToString("n2"))
);
и затем в действии вашего контроллера:
public ActionResult Foo()
{
IEnumerable<AdminVAT> listAdminVAT = ... fetch from repo
var model = new MyViewModel
{
ListVAT = Mapper.Map<IEnumerable<AdminVAT>, IEnumerable<AdminVATViewModel>>(listAdminVAT)
};
return View(model);
}
и, наконец, в представлении:
@model MyViewModel
@Html.DropDownListFor(
x => x.SelectedVAT,
new SelectList(Model.ListVAT, "Id", "Value")
)