我有一个客户类&我想有客户电子邮件字段显示在CSV格式的管理列表视图。当编辑视图显示时,我想让视图显示电子邮件在一个文本框中,用换行符分割。
我不想有2个不同的类为每个视图只是使用相同的,第一个使用IEnumerable<T>
来显示列表。我的类是相当大的,我不想有2个单独的视图类来管理。
理想的目标是为每个不同的映射场景提供2个不同的AutoMapper映射,而不仅仅局限于在引导阶段使用CreateMap创建的映射。我该如何做到这一点?实际上,我想根据我在代码中的位置来切换映射策略。
理想情况下,您将使用两个不同的视图模型,并将源映射到所需的目标。然而,如果你不想走这条路,一个选择是创建一个具有两个只读属性的视图模型。
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