asp.net mvc autopper используя - PullRequest
       5

asp.net mvc autopper используя

0 голосов
/ 14 декабря 2011

недавно я начал использовать viewmodels с automapper. проблема появилась сразу. например, у меня есть такие классы:

public class Zone
{
    public int ZoneId;

    public string Title;

    public int BannersCount;
}

public class ZoneView
{
    public int ZoneId
    {
        get;
        set;
    }

    public string Title;
    {
        get;
        set;
    }

    [Required(ErrorMessage = "Поле Кол-во баннеров является обязательным.")]
    [Display(Name = "Кол-во баннеров*")]
    public int BannersCount
    {
        get;
        set;
    }
}

и я не хочу редактировать название на мой взгляд. так что я показываю заголовок не в TextEditor, а так:

@Model.Title

, а затем в моем действии POST ZoneView содержит пустой заголовок:

public ActionResult Edit(ZoneView zoneView)

после этого я сопоставляю его с моделью домена:

var zone = zonesRepository.Get(zoneView.ZoneId);
Mapper.Map<ZoneView, Zone>(zoneView, zone);

и после этого в зоне появляется пустой заголовок. Как лучше всего действовать в этом случае?

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Вы можете создать определение сопоставления, инструктируя автопроизводителю игнорировать свойство Title при отправке значений в Zone.

Mapper.CreateMap<ZoneView, Zone>()
   .ForMember(destination => destination.Title, member => member.Ignore());

Вы создадите эту CreateMap один раз, при запуске приложения.Затем карта, как вы были.

var zone = zonesRepository.Get(zoneView.ZoneId);
Mapper.Map<ZoneView, Zone>(zoneView, zone);
0 голосов
/ 14 декабря 2011
  • Большую часть времени я использую скрытый ввод таких значений.
  • А также проверяю на уровне БД для проверки значения с заголовком.

Это может быть не лучшим решениемно это работает.

...