我希望能够找到我的应用的用户登录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创建的。
谢谢!
答案 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);
}