MVC5控制器:所有付费会员的返回列表?

时间:2014-09-02 14:25:24

标签: c# asp.net-mvc linq asp.net-mvc-5

我的MVC5应用程序中有2个相应的表,涉及成员会费:

[MemberDues] -- [Id], [Year], [Display], [Amount]

[MemberDuesReceived] -- [Id], [MemberDuesId], [MemberOrgId], [PaidByUserId], [TransactionId], [Paid], [DatePaid], [PaymentMethod], [PayPalPaymentId], [PayPalPayerId], [PayPalPaymentState]

对于MemberDuesManageController我正在尝试创建一个ViewDuesPaidMembers()方法,其中我返回已缴纳会费的所有MemberOrgs的列表。现在,我可以通过从我的索引视图上的按钮传递我的模型ID并搜索数据库来获取当前MemberDues.[Id]MemberDues memberDues = await db.MemberDues.FindAsync(id);

我不确定的是我如何使用此MemberDues.[Id]搜索MemberDuesReceived表并返回MemberDuesReceived.[MemberOrgId]的所有[Paid]值列表{ {1}}在我的ActionResult中。

以下是我到目前为止的情况。任何人都可以举例说明如何从其他表中返回相应的MemberOrgs列表吗?

True

修改

考虑到琼西的建议我现在有:

public async Task<ActionResult> ViewDuesPaidMembers(int id)
        {
            MemberDues memberDues = await db.MemberDues.FindAsync(id);
            return null;
        }

我现在要弄清楚的是如何设置我的Button以便它将使用新的控制器方法 public async Task<ActionResult> DuesPaidMembers(int id) { MemberDues memberDues = await db.MemberDues.FindAsync(id); var duesPaidList = db.MemberDuesReceived.Where(mdr => mdr.MemberDuesId == id && mdr.Paid).ToList(); return View(duesPaidList); } 并重定向以查看DuesPaidMembers()以显示我的付费MemberOrgs列表:

DuesPaidMember.cshtml

目前,我的按钮将我转到<a href="MembersDuesManage/DuesPaidMembers/@item.Id" class="btn btn-default btn-sm noDecoration"><span class="glyphicon glyphicon-list-alt"></span> View Paid</a> ,并显示以下消息:http://localhost:15160/Admin/MembersDuesManage/DuesPaidMembers/1

1 个答案:

答案 0 :(得分:2)

Find使用主键查找单个记录。您想在外键表上使用Where

var duesList = db.MemberDuesReceived
                   .Where(mdr => mdr.MemberDuesId == id && mdr.Paid)
                   .ToList();

假设Paid是bool值。

如果您只想要一个MemberOrgId列表,您需要添加一个Select语句:

var idList = db.MemberDuesReceived
                  .Where(mdr => mdr.MemberDuesId == id && mdr.Paid)
                  .Select(mdr => mdr.MemberOrgId) 
                  .ToList();