无法请求包含UserID的数据库中的对象列表

时间:2017-01-25 19:16:29

标签: c# asp.net asp.net-mvc entity-framework

我尝试仅在与使用Entity Framework和MVC当前登录的用户的ID匹配时才显示项目列表。

我使用Entity Framework中的代码优先模型创建了一个数据库。我已经成功地在此数据库中添加了一个表,League,用于以前的迁移。

这些课程有一对多关系,因此一个用户可以拥有多个联赛。

以下是无效的控制器:

[Authorize]
    public ActionResult Index()
    {
        var userId = User.Identity.GetUserId();
        //Need to add functionality - if no user login, redirect to login page, if user is logged in, match aspnet user id to leagues displayed.
        return View(db.Leagues.ToList().Where(u => u.ApplicationUser_Id == userId));
    }

这是联盟模式:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity;
using System.Linq;
using System.Web;

namespace WebApplication1.Models
{

    public class League
    {

        public League()
        {
            var Teams = new List<Team>();
            var Matches = new List<Match>();
        }

        [Key]
        [Display(Name = "League ID")]
        public int LeagueId { get; set; }
        [Display(Name = "League Name")]
        public string Name { get; set; }
        [DataType(DataType.Date)]
        [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)]
        [Display(Name = "Start Date")]
        public DateTime StartDate { get; set; }

        public virtual ApplicationUser ApplicationUser { get; set; }
        [ForeignKey("ApplicationUser")]
        public string ApplicationUser_Id;


        public virtual ICollection<Team> Teams { get; set; }
        public virtual ICollection<Match> Matches { get; set; }

    }
}

以下是传递给它的视图:

    @model IEnumerable<WebApplication1.Models.League>

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>Leagues</h2>


<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.Name)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.StartDate)
        </th>
        <th>
            Options
        </th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Name)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.StartDate)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.LeagueId }) |
            @Html.ActionLink("Details", "Details", new { id=item.LeagueId }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.LeagueId })
        </td>
    </tr>
}

</table>

我只有一个用户,并在数据库中的ApplicationUser_Id列中添加了一个与当前用户ID匹配的条目,因此至少应显示一条记录。

但是,该列表为空:

enter image description here

总结一下,我试图将当前用户传递给数据请求,并将结果输出到数据库中包含当前登录用户的userId的所有联盟对象。

任何想法如何编码?

0 个答案:

没有答案