如何使用当前用户

时间:2016-03-16 20:45:28

标签: asp.net-mvc

我正在尝试为应用程序用户的子表添加创建控制器方法。我无法弄清楚如何填充用户ID。我正在学习mvc,这看起来像是一个基本概念,但我无法让它发挥作用。这是我的课。

public class Ticket
{
    [Key]
    public long Id { get; set; }

    [StringLength(128), MinLength(3)]
    [ForeignKey("AspNetUser")]
    public virtual string AspNetUserId { get; set; }

    public virtual ApplicationUser AspNetUser { get; set; }

    public DateTime Date { get; set; }

    public string Request { get; set; }
}

这是我的索引 - 希望只提取与当前用户相关的记录。我没有种子数据设置,所以我必须让create for working来测试它,但视图出现了。

    public ActionResult Index()
    {
        //var userId = User.Identity.GetUserId();
        var userId = UserManager.FindById(User.Identity.GetUserId());

        var tickets = db.Tickets.Where(m => m.AspNetUser == userId); ;
        return View(tickets.ToList());
    }

我的创建获取也会出现,但似乎没有联系起来。

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

这是我麻烦的创建post方法。当我点击提交时没有任何反应。

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create([Bind(Include = "Id,AspNetUserId,Date,Request")] Ticket ticket)
{
    if (ModelState.IsValid)
    {
        ticket.AspNetUserId = User.Identity.GetUserId();
        db.Tickets.Add(ticket);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(ticket);
}

在我的视图中,我有一个@ Html.HiddenFor(model => model.Id)作为Id,但由于它没有发布,我认为我的ModelState无效。

太令人沮丧了。

0 个答案:

没有答案