【发布时间】:2015-03-13 09:53:37
【问题描述】:
我对 MVC 和 C# 还很陌生,我发现自己陷入了这个问题。
我有 3 个表:UserCredentials、BusinessCredentials 和 BusinessDetails。 我创建了 3 个 ViewModel:
UserBusinessListingViewModel
[Display(Name = "User Id:")]
public int User_Id { get; set; }
public IEnumerable<BusinessCredentialsViewModel> BusinessCredentialsViewModels {get; set;}
BusinessCredentialsViewModel
[Display(Name = "Business Id:")]
public int Id { get; set; }
[Display(Name = "Name:")]
public string Name { get; set; }
public IEnumerable<BusinessDetailsViewModel> BusinessDetailsViewModels { get; set; }
BusinessDetailsViewModel。
[Display(Name = "Id:")]
public int Id { get; set; }
[Display(Name = "Category:")]
public string Category { get; set; }
[Display(Name = "Rating:")]
public float Rating { get; set; }
[Display(Name = "Country:")]
public string Country { get; set; }
[Display(Name = "State:")]
public string State { get; set; }
[Display(Name = "City:")]
public string City { get; set; }
主视图模型是UserBusinessListingViewModel;它必须显示来自上述所有 3 个表格的信息。
在我拥有的控制器中
UserCredential businessSectionUserCredential =
_unitOfWork.UserCredentials
.Include("BusinessCredentials")
.Include("BusinessCredentials.BusinessDetails")
.First(p => p.Id == WebSecurity.CurrentUserId);
var userBusinessListingViewModel = new UserBusinessListingViewModel();
userBusinessListingViewModel.User_Id = businessSectionUserCredential.Id;
我被困在这里了。
userBusinessListingViewModel.BusinessCredentialsViewModels
没有属性。我如何映射这个?
谢谢。
我想实现这样的目标。 以前做过,但这很容易,因为我只有一个视图模型:
var profileViewModel = new ProfileViewModel();
UserCredential userCredential = _unitOfWork.UserCredentials.Include(p => p.UserDetail).First(p => p.Id == WebSecurity.CurrentUserId);
UserDetail userDetail = userCredential.UserDetail;
profileViewModel.UserCredentials_Id = userCredential.Id;
profileViewModel.Email = userCredential.Email;
profileViewModel.FirstName = userDetail.FirstName;
profileViewModel.LastName = userDetail.LastName;
return PartialView("_ProfilePartial", profileViewModel);
我正在使用
@model BusinessListing.ViewModels.UserBusinessListingViewModel
<div class="col-md-8">
<p class="p-custom-bg">@Model.User_Id</p>
</div>
显示这个。
【问题讨论】:
-
userBusinessListingViewModel.BusinessCredentialsViewModels没有属性,因为它是一个 IEnumerable。您可以使用 `.Select(b=> b.Name) 访问每个项目 -
类似
userBusinessListingViewModel.BusinessCredentialsViewModels = businessSectionUserCredential.BusinessCredentials.Select(x => new BusinessCredentialsViewModel() { ID = x.ID, NAme = x.Name, etc });
标签: c# asp.net-mvc model-view-controller controller web-deployment