user2328625
user2328625

Reputation: 371

Getting model to viewmodel easily

I have a view-model like this:

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

Thinking that I want the model accessible to the view, plus a some extra fields that aren't really part of the model, such as a drop down list of countries.

Then in the controller I try to "pass the model over to the view-model"

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

        U1MyProfile1ViewModel myProfileViewModel = (U1MyProfile1ViewModel)myProfile; 

this compiles, but I get a runtime error of:

InvalidCastException: Unable to cast object of type 'WebApp.Models.U1Profile' to type 'WebApp.ViewModels.U1MyProfile1ViewModel'.

Any ideas on how to do this easily?
Something simpler than assigning the model to the view-model field by field.

Upvotes: 0

Views: 275

Answers (1)

Kiran Joshi
Kiran Joshi

Reputation: 1876

Set your View model like follow:

View modal

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

Controller

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

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

And finally just passed your viewmodal to View and you get your result.

For better understanding just see below link:
Link1
Link2

Upvotes: 1

Related Questions