我有一个客户类&我希望客户电子邮件字段以CSV格式显示,以显示管理列表视图。当编辑视图显示时,我希望视图在文本框中显示电子邮件,并使用换行符字符进行分割。
我不希望每个视图有2个不同的类只使用相同的,第一个使用IEnumerable<T>
来显示列表。我的班级非常庞大,我不希望有2个单独的视图类来管理。
理想的目标是为每个不同的映射方案提供2个不同的AutoMapper映射1,而不仅仅局限于在Bootstrap阶段使用CreateMap创建的映射方案。我该如何实现这一目标?实际上,我想根据我在代码中的位置来切换映射策略。
答案 0 :(得分:1)
理想情况下,您将使用两种不同的视图模型,并将源映射到所需的目标。但是,如果您不想使用此路由,则可以选择创建具有两个只读属性的视图模型。
public class SomeClassViewModel
{
public string FirstName { get; set;}
public string LastName { get; set; }
public string Emails { get; set; }
public string EmailsCSV
{
get
{
var csv = Emails;
//Do CSV transform here
return csv;
}
}
public string EmailsCRLF
{
get
{
var crlf = Emails;
//Do crlf transform here
return crlf;
}
}
}
同样,理想情况下,您希望每个视图都遵循一个模型的规则。这并不意味着你需要为每个模型编写一个全新的视图,总是有继承。
MyViewModelA : MyViewModelBase
MyViewModelB : MyViewModelBase