Формат строки в отображении - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть строковые значения на моем объекте, отформатированные в Markdown.При сопоставлении с моим типом ObjectViewModel мне нужно будет отформатировать Markdown в направлении HTML.Насколько я понимаю, я мог бы использовать Resolver и ResolveUsing при отображении - но я получил много различных строковых свойств, необходимых для прохождения процедуры, и кажется, что реализация Resolver решает, что не вCreateMap.

.ForMember(m => m.Description, o => o.MapFrom(f => f.Description))

это просто отобразит значения.

Есть ли способ сделать что-то особенное для каждого свойства, например:

.ForMember(m => m.Description, o => o.ConvertUsing<MarkDownToHtmlConverter>(f => f.Description))

1 Ответ

0 голосов
/ 02 января 2019

Есть два способа, которые сразу приходят на ум:

1) ValueConverter

public class MarkDownToHtmlConverter : IValueConverter<string, string>
{
    public string Convert(string sourceMember, ResolutionContext context)
    {
        // Convert to HTML here
        string html = sourceMember;
        return html;
    }
}

cfg.CreateMap<Entity, EntityViewModel>()
    .ForMember(x => x.Description, opt => opt.ConvertUsing(new MarkDownToHtmlConverter()));

2) AfterMap

public class HtmlToMarkdownAction : IMappingAction<Entity, EntityViewModel>
{
    public void Process(Entity source, EntityViewModel destination)
    {
        destination.Description = source.Description; // Convert to HTML
    }
}


cfg.CreateMap<Entity, EntityViewModel>()
    .AfterMap<HtmlToMarkdownAction>();

Мое мнение об этом, хотячто преобразование должно происходить где-то еще во время отображения, например, в Razor.Не похоже, что работа картографа заключается в том, чтобы делать этот тип преобразования ... это только мое мнение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...