轻松获取模型到模型

时间:2018-10-29 04:32:45

标签: asp.net-core asp.net-core-mvc

我有一个这样的视图模型:

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 :(得分:1)

按照以下步骤设置View模型:

查看模式

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;

最后将您的视图模式传递给View,您就得到了结果。

为更好地理解,请参见以下链接: Link1
Link2