具有LINQ连接的伙伴视图模型
求救!我试图实现的是让登录的用户看到他或她正在支持的用户(成为好友)。我现在正试图完全采用ViewModels来凝聚视图。我在Mysql中使用simplemembership MVC4。我有一个UserProperties(我用户的所有详细信息)链接到Userprofile,其他一切都可以工作。我通常使用两个数据库,一个用于会员资格,另一个用于所有其他内容 模型 UserProfile/UserProPerties-扩展为所有其他属性具有LINQ连接的伙伴视图模型,linq,asp.net-mvc-4,simplemembership,asp.net-mvc-viewmodel,Linq,Asp.net Mvc 4,Simplemembership,Asp.net Mvc Viewmodel,求救!我试图实现的是让登录的用户看到他或她正在支持的用户(成为好友)。我现在正试图完全采用ViewModels来凝聚视图。我在Mysql中使用simplemembership MVC4。我有一个UserProperties(我用户的所有详细信息)链接到Userprofile,其他一切都可以工作。我通常使用两个数据库,一个用于会员资格,另一个用于所有其他内容 模型 UserProfile/UserProPerties-扩展为所有其他属性 用户ID 列表项 用户名 用户属性 名字 姓氏 学名
- 用户ID
- 列表项
- 用户名
- 名字
- 姓氏
- 学名
- 用户ID
- 佛教徒
- 巴迪比尤塞里德
- 巴迪杜塞里德
public class BuddyViewModel
{
public BuddyShip BuddyShip {get; set;}
public List<Buddyship> AllBudees {get; set;}
public UserProperty UserProperty { get; set; }
public PanelViewModel(Buddyship buddyship, List<Buddyship> allBudees)
{
Buddyship = buddyship;
AllBudees = allBudees;
}
}
看法
@model IEnumerable
@foreach(模型Buddyships中的var项)
{
@DisplayFor(model=>model.UserProperty.FirstName)
@DisplayFor(model=>model.UserProperty.LastName)
}
如果您能够提供帮助,请尝试按以下方式更改代码 视图模型:
public class BuddyViewModel
{
public BuddyShip BuddyShip {get; set;}
public List<Buddyship> AllBudees {get; set;}
public List<UserProperty> Users { get; set; } //** Add this property
}
公共类BuddyView模型
{
公共友谊友谊{get;set;}
公共列表所有对象{get;set;}
公共列表用户{get;set;}/**添加此属性
}
你的行动:
public ActionResult Index(int? id)
{
//I get logged in user properties
var user = db.UserProperties.SingleOrDefault(x => x.UserName == User.Identity.Name);
///**************Get Buddyships of current user*************************
List<Buddyship> allBudees = db1.Buddyships.Where(u =>u.BuddiedByUserId == user.UserId).ToList();
///**************Get Users supporting by user*************************
var buds =
(from u in db.UserProperties
join m in allBudees on u.UserId equals m.buddiedUserId
where m.BuddiedByUserId == user.UserId
select new UserProperty
{
FirstName = u.FirstName,
LastName = u.LastName,
SchoolName = u.SchoolName,
UserId = u.UserId
}).ToList();
var buddyviewmodel = new BuddyViewModel
{
Users = buds,
AllBudees = allBudees, //** if you really need this property in your View,
...
}
return View(buddyviewmodel);
}
public ActionResult索引(int?id)
{
//我登录到用户属性
var user=db.UserProperties.SingleOrDefault(x=>x.UserName==user.Identity.Name);
///**************获取当前用户的好友关系************************
列出allBudees=db1.Buddyships.Where(u=>u.BuddiedByUserId==user.UserId.ToList();
///**************通过用户获得用户支持************************
变量=
(来自db.UserProperties中的u)
在u.UserId等于m.buddiedUserId的allBudees中加入m
其中m.BuddiedByUserId==user.UserId
选择新用户属性
{
FirstName=u.FirstName,
LastName=u.LastName,
学校名称=美国学校名称,
UserId=u.UserId
}).ToList();
var buddyviewmodel=新buddyviewmodel
{
用户=芽,
AllBudees=AllBudees,//**如果您在视图中确实需要此属性,
...
}
返回视图(buddyviewmodel);
}
改变看法。在您的操作中,您只发送一个BuddyViewModel,其中包含UserProperties列表,而不是BuddyViewModels列表
@model BudTT.Models.BuddyViewModel
@foreach (var item in Model.Users)
{
<p>@item.FirstName</p>
<p>@item.LastName</p>
}
@model BudTT.Models.BuddyViewModel
@foreach(Model.Users中的var项)
{
@item.FirstName
@item.LastName
}
感谢Andrey对Intellisense的帮助,但我在列表allBudees=db1中发现一个错误……。'BudTT.Models.Buddyship'不包含“ToList”的定义,并且找不到接受“BudTT.Models.Buddyship”类型的第一个参数的扩展方法“ToList”(是否缺少using指令或程序集引用?)@你有使用System.Linq指令吗?是的,我有@andrey gudal我们快到了,我还在寻找替代方案
public ActionResult Index(int? id)
{
//I get logged in user properties
var user = db.UserProperties.SingleOrDefault(x => x.UserName == User.Identity.Name);
///**************Get Buddyships of current user*************************
List<Buddyship> allBudees = db1.Buddyships.Where(u =>u.BuddiedByUserId == user.UserId).ToList();
///**************Get Users supporting by user*************************
var buds =
(from u in db.UserProperties
join m in allBudees on u.UserId equals m.buddiedUserId
where m.BuddiedByUserId == user.UserId
select new UserProperty
{
FirstName = u.FirstName,
LastName = u.LastName,
SchoolName = u.SchoolName,
UserId = u.UserId
}).ToList();
var buddyviewmodel = new BuddyViewModel
{
Users = buds,
AllBudees = allBudees, //** if you really need this property in your View,
...
}
return View(buddyviewmodel);
}
@model BudTT.Models.BuddyViewModel
@foreach (var item in Model.Users)
{
<p>@item.FirstName</p>
<p>@item.LastName</p>
}