我正在研究asp.net MVC 4应用程序。我有一个这样的视图模型:
public class MainViewModel
{
public List<EmailAccount> EmailAccounts { get; set; }
public List<UserContact> Contacts { get; set; }
public List<LinkedInProfile> LinkedInProfiles { get; set; }
public IConfig Config { get; set; }
}
联系人和LinkedInProfiles有很多关系,所以我定义了联结表:
public class LinkedInAccountConnection
{
[Key]
[Column(Order = 0)]
public Guid LinkedInAccountId { get; set; }
[Key]
[Column(Order = 1)]
public string LinkedInProfileId { get; set; }
}
在视图中我正在使用它:
@foreach (var c in Model.Collection.Contacts.OrderByDescending(c => c.LastUpdated).Take(500))
{
@Html.Action("ContactListWidget", "Account", new { contact = c })
}
EF代码
var user = dataRepository.GetUserByUsername(username);
Contacts = dataRepository.GetContactsAll(user.Item.UserID).Where(c => c.UserContactEmailAddresses.All(e=> !Cleansing.IsAutomatedEmailAddress(e.EmailAddress))).ToList();
foreach (var c in Contacts)
{
var userContactToLinkedInProfiles = c.UserContactToLinkedInProfiles;
foreach (var uc in userContactToLinkedInProfiles)
{
var profile = uc.LinkedInProfile;
LinkedInProfiles.Add(profile);
}
}
我想在ContactListWidget部分视图中显示与联系人相关的信息以及相关的LinkedInProfile。我需要对Viewmodel进行哪些更改并进行查看?
请建议。
答案 0 :(得分:0)
您只需填写ViewModel,然后将其绑定到您的视图。
<强>控制器强>
[HttpGet]
public ActionResult GetDetails()
{
var mainViewModel = new MainViewModel();
mainViewModel.EmailAccounts=Repository.GetEmailAccounts();
mainViewModel.Contacts=Repository.GetUserAccounts();
mainViewModel.LinkedInProfiles=Repository.GetLinkedInProfiles();
mainViewModel.Config=Repository.GetConfigData();
return PartialView("ContactListWidget", mainViewModel );
}
查看强>
@model YourProject.ViewModels.MainViewModel //set your viewmodel here
之后,您可以使用ViewModel的列表数据绑定到其他html元素。
如果您愿意,可以阅读我撰写的关于"How to Use ViewModel with ASP.NET MVC"的文章以获取更多信息。
效果提醒: @foreach (var c in Model.Collection.Contacts.OrderByDescending(c => c.LastUpdated).Take(500))