具有LINQ连接的伙伴视图模型

具有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 列表项 用户名 用户属性 名字 姓氏 学名

求救!我试图实现的是让登录的用户看到他或她正在支持的用户(成为好友)。我现在正试图完全采用ViewModels来凝聚视图。我在Mysql中使用simplemembership MVC4。我有一个UserProperties(我用户的所有详细信息)链接到Userprofile,其他一切都可以工作。我通常使用两个数据库,一个用于会员资格,另一个用于所有其他内容

模型

UserProfile/UserProPerties-扩展为所有其他属性

  • 用户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>
      }