Передача модели во ViewModel с использованием Automapper - PullRequest
0 голосов
/ 01 апреля 2019

Я работаю над основным проектом ASP.NET.Я хочу сопоставить модель с моделью представления, используя Automapper, но есть проблема, которая описана ниже. Это MyRepository

 public class MyRepository
 {
     public async Task<IEnumerable<Cars>> GetAllCarsAsync()
    {
        return await _RepositoryContext.Set<Cars>().ToListAsync();
    }
 }

И это MyController

 public class MyController: Controller
 {
    [HttpGET]
    public async Task<IActionResult> Create()
      {
          var car = await _MyRepository.GetAllCarTypesAsync();
          var model = _mapper.Map<IEnumerable<CarsVM>>(car);
          return View(model);
      }
 }

И, наконец, это мой вид

@model  DataLayers.Models.ViewModels.CarsVM

<form " asp-controller="MyController" asp-action="Create">
  <label class="label" asp-for="Carname"></label>
  <input class="input" type="text" asp-for="Carname">
  <select>
     <option> A carType </option>
     <option>A carType </option>
  </select>
</from>

Проблема в моем контроллере.var car возвращает IEnumerable, а затем мы сопоставляем результат с CarsVM.когда я передаю модель для просмотра, она ожидает, что CarsVM не будет иметь номера CarsVM.как я могу их скрыть?И если теперь можно конвертировать их, что мне делать?как я могу передать свои данные для просмотра?

1 Ответ

1 голос
/ 01 апреля 2019

Я бы предложил обновить строку Autopper для преобразования в List вместо интерфейса IEnumerable, чтобы вы могли убедиться, что модель представления материализована в контроллере.Это очевидно, если смотреть на код репозитория, но только если вы видите, что репозиторий возвращает IEnumerable.

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

Репозиторий

public class MyRepository
{
    public async Task<List<Cars>> GetAllCarsAsync()
    {
        return await _RepositoryContext.Set<Cars>().ToListAsync();
    }
}

Контроллер

public class MyController: Controller
{
    [HttpGET]
    public async Task<IActionResult> Create()
    {
        var car = await _MyRepository.GetAllCarTypesAsync();
        var model = _mapper.Map<List<CarsVM>>(car);
        return View(model);
    }
}

Просмотр

@model List<DataLayers.Models.ViewModels.CarsVM>
<form asp-controller="MyController" asp-action="Create">
    <label class="label" asp-for="Carname"></label>
    <input class="input" type="text" asp-for="Carname">
    <select>
       <option> A carType </option>
       <option>A carType </option>
    </select>
</from>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...