将列表返回到视图

时间:2015-11-04 16:30:22

标签: c# asp.net asp.net-mvc list return

我希望能够找到我的应用的用户登录ID,然后将其与我的数据库中包含用户登录ID的所有行相匹配。在找到所有匹配后,我想显示结果为true,然后将它们传递给视图。这是我到目前为止所拥有的;

public ActionResult YourEvents()
{   
   //users email who is logged in
        var userId = User.Identity.Name;
   //list of users who have created events that match the name of the user logged in.
        IEnumerable<Event> userListing = db.Events.Where(x => x.EventCreator == userId);
        foreach (var e in userListing)
        {
    //return all that match 
         return View(e);
        }
            return View("EventErrorCreateMessage", "Event");
    }

    public ActionResult EventErrorCreateMessage()
    {
        return View();
    }

我的计划是使用foreach语句在数据库中查找电子邮件ID,然后使用它来显示视图列表中的整行。

如果您需要更多代码,请与我们联系。 cshtml文件是使用scaffolding创建的。

谢谢!

2 个答案:

答案 0 :(得分:1)

首先输入

,使您的观点与IEnumerable<Event>进行强烈打字 在视图顶部

@model IEnumerable<Event>,然后使用以下命令更改操作方法:

public ActionResult YourEvents()
{
   var userId = User.Identity.Name;
   IEnumerable<Event> userListing = db.Events.Where(x => x.EventCreator == userId);
   return View("EventErrorCreateMessage", "Event", userListing );
}

使用ViewData

        public ActionResult YourEvents()
        {
           var userId = User.Identity.Name;
           IEnumerable<Event> userListing = db.Events.Where(x => x.EventCreator == userId);
           ViewData["list"] = userListing;
           return View("EventErrorCreateMessage", "Event");
        }

并在视图中检索

@{IEnumerable<Event> list = (IEnumerable<Event>)ViewData["list"];}

答案 1 :(得分:0)

您可以在其他方法中使用yield return。像这样:

public IEnumerable<Event> GetUser(string userId)
{
   var users = db.Events.Where(x => x.EventCreator == userId);
   foreach (var user in users)
   {
      yield return user;
   }
}

public ActionResult YourEvents()
{
   var userId = User.Identity.Name;
   var users = new List<Event>(GetUser(userId));
   return View(users);
}