创建一个视图(索引)以显示特定ID的记录列表?

时间:2017-05-03 09:35:01

标签: c# asp.net-mvc asp.net-mvc-views

早上的人,

我在我的mvc项目中使用c#。我有一个列出家庭成员的索引视图。

这样可以正常工作并撤回数据库中的所有记录。

 public ActionResult Index()
    {
        List<Household> houseRecords = db.Households.ToList();

        return View(houseRecords);
    }

我创建了另一个名为ListMembers()的列表视图页面,此列表基于家庭成员,因此我希望此视图可以回溯特定于我创建的引用的记录(ClientId)。

我原以为我可以在我的List代码中添加一个where子句,并以ClientId为基础,但我不能100%确定这会有效。

 List<Household> houseRecords = db.Households.ToList().Where(x => x.ClientId = x.id);

有人能指出我正确的方向吗?

此致 贝蒂

3 个答案:

答案 0 :(得分:0)

假设您要根据通过URL传入的ID过滤列表,可以在操作方法中添加一个参数并使用此参数进行过滤。

请注意,根据问题中的示例,您应该在IQueryable上执行过滤器逻辑,而不是在调用ToList()之后,以防止所有记录都被加载到内存中。

// <root>/<controller>/ListMembers/123 (using default route)
public ActionResult ListMembers(int clientId)
{
    var houseRecords = db.Households.Where(x => x.ClientId == clientId).ToList();
    return View(houseRecords);
}

答案 1 :(得分:0)

它会起作用我相信但你可以这样做

 var  houseRecords = db.Households.Where(x => x.ClientId = x.id).ToList(); 

我认为在获得最终名单之前做更好的事情

答案 2 :(得分:0)

我不确定你为什么说“你不认为它会起作用”? 我在你提到的内容中可以看到的问题是 1。 List<Household> houseRecords = db.Households.ToList().Where(x => x.ClientId = x.id);应更改为

List<Household> houseRecords = db.Households.Where(x => x.ClientId = x.id).ToList();

注意最后的.ToList

  1. 由于您要创建名称为

    的操作方法

    ListMembers()

  2. 您应该如何创建一个接受客户端ID的操作方法,然后在查询中使用它。所以这样的事情 public ActionResult ListMembers(int clientId) {     var houseRecords = db.Households.Where(x =&gt; x.ClientId = clientId).ToList();     返回查看(houseRecords); } 然后根据你的路线你可以像这样调用这个方法

    http://<BaseUrl>/ListMembers?clientId=123