Получение модели для просмотра модели легко - PullRequest
0 голосов
/ 29 октября 2018

У меня есть модель вида, подобная этой:

public class U1MyProfile1ViewModel : U1Profile
{
    public List<SelectListItem> CountryList { get; set; }
}

Считая, что я хочу, чтобы модель была доступна для просмотра, плюс некоторые дополнительные поля, которые на самом деле не являются частью модели, такие как раскрывающийся список стран.

Затем в контроллере я пытаюсь «передать модель на модель представления»

        var myProfile = await _mainDbContext.U1Profiles
            .AsNoTracking()
            .FirstOrDefaultAsync(i => i.SiteUserId == mySiteUserId);

        U1MyProfile1ViewModel myProfileViewModel = (U1MyProfile1ViewModel)myProfile; 

это компилируется, но я получаю ошибку времени выполнения:

InvalidCastException: невозможно привести объект типа «WebApp.Models.U1Profile» к типу «WebApp.ViewModels.U1MyProfile1ViewModel».

Есть идеи, как это легко сделать?
Что-то более простое, чем присвоение модели полю модели представления по полю.

1 Ответ

0 голосов
/ 29 октября 2018

Установите модель просмотра следующим образом:

Просмотр модальных

public class U1MyProfile1ViewModel
{
    public List<SelectListItem> CountryList { get; set; }
    public U1Profile U1Profile{get;set;}
    public string othervariable{get;set;}
}

Контроллер

var myProfile = await _mainDbContext.U1Profiles
            .AsNoTracking()
            .FirstOrDefaultAsync(i => i.SiteUserId == mySiteUserId);

        U1MyProfile1ViewModel myProfileViewModel = new U1MyProfile1ViewModel;
       U1MyProfile1ViewModel.U1Profile=myProfile;
       U1MyProfile1ViewModel.CountryList=yourcountrylist;

И, наконец, просто передал ваш viewmodal в View, и вы получите свой результат.

Для лучшего понимания смотрите ссылку ниже:
Link1
Link2

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