我有一个这样的视图模型:
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”。
关于如何轻松实现此目标的任何想法?
比将模型逐字段分配给视图模型更简单。
答案 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,您就得到了结果。