我有一个客户类别,我希望在管理 ListView 中以 CSV 格式显示客户电子邮件字段。当显示编辑 View 时,我想让 View 在文本框中显示电子邮件,并使用换行符提要。
我不想为每个 View 设置 2 个不同的类,只使用相同的类,第一个使用 IEnumerable<T>
显示列表。我的类(class)很大,我不想管理 2 个单独的 View 类(class)。
理想的目标是为每个不同的映射场景提供 2 个不同的 AutoMapper 映射 1,而不是仅限于在引导阶段使用 CreateMap 创建的映射。我如何实现这一目标?实际上,我想根据我在代码中的位置来切换映射策略。
理想情况下,您将使用两个不同的 View 模型并将源映射到所需的目的地。但是,如果您不想走这条路,一个选择是创建一个具有两个只读属性的 View 模型。
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;
}
}
}
同样,理想情况下,您会希望坚持每个 View 一个模型的规则。这并不意味着您需要为每个模型编写一个全新的 View ,继承总是存在的。
MyViewModelA : MyViewModelBase
MyViewModelB : MyViewModelBase
我是一名优秀的程序员,十分优秀!