Как я могу преобразовать список объектов области к viewmodels на Контроллере в ASP.NET MVC

См. http://www.gnu.org/software/emacs/windows/ntemacs.html . Раздел 2.1 описывает, где получить его и разделить 3.5, описывает, куда .emacs файл идет (по умолчанию, в Вашем корневом каталоге, как определено переменной Домашней среды).

5
задан kurasa 8 November 2009 в 23:50
поделиться

3 ответа

Для простых объектов вы можете просто использовать Linq:

IList<BallViewModel> _balls = _ballsService.GetBalls(searchCriteria)
    .Select(b => new BallsViewModel
                 {
                     ID = b.ID,
                     Name = b.Name,
                     // etc
                 })
    .ToList();

Это может стать довольно повторяющимся, поэтому вы можете дать своему классу BallViewModel конструктор, который принимает Ball и выполняет всю работу за вас. .

Другой подход - использовать библиотеку наподобие AutoMapper для копирования свойств (даже вложенных) из объекта домена в модель представления.

7
ответ дан 14 December 2019 в 01:10
поделиться

Возможно немного Linq, что-то вроде

var ballQuery = from ball in _ballsService.GetBalls(searchCriteria)
                select new BallViewModels
                {
                    Diameter = ball.Diameter,
                    color = ball.Color,
                    ...
                }
IList<BallViewModels> _balls = ballQuery.ToList();

Либо это, либо вопрос сложнее, чем я думаю ...

1
ответ дан 14 December 2019 в 01:10
поделиться

Я использую AutoMapper , чтобы делать это все время. Он действительно гибкий и до сих пор работал у меня без каких-либо проблем.

Сначала вы настраиваете карту, как при инициализации вашего приложения:

Mapper.CreateMapping<Balls, BallViewModel>();

И всякий раз, когда вам нужно сопоставить объекты, вы должны делать это:

Mapper.Map<IList<Balls>, IList<BallViewModel>>(_ballsService.GetBalls());

Как Я сказал, что он очень гибкий, и вы можете изменить способ сопоставления для каждого свойства, используя свободный API.

1
ответ дан 14 December 2019 в 01:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: