繁体   English   中英

.NET Core 使用 AppUser 作为另一个模型中的属性

[英].NET Core use AppUser as attribute in another model

所以我要做的是将作者与帖子相关联。 AppUser 类从 IdentityUser 扩展而来。 我试图将每篇文章的作者设置为 AppUser,但我遇到了一些问题。 在数据库中,作者没有出现,而是 AuthorId,这是为什么? 但是看起来我可以从帖子中访问 AppUser,我没有收到错误或警告。 但是我仍然无法在帖子的帮助下查看作者姓名,有人可以解释原因吗?

岗位模型

public class Post
{
    .....
    .....

    public AppUser Author { get; set; }

}

应用用户

public class AppUser : IdentityUser
{
}

控制器

    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<IActionResult> Create(Post post)
    {

        if (ModelState.IsValid)
        {

            AppUser appUser = await userManager.GetUserAsync(HttpContext.User);
            post.Author = appUser;

            string slug = userProject.Name.ToLower().Replace(" ", "-");
            post.Slug = slug;

            context.Add(post);
            await context.SaveChangesAsync();

            return RedirectToAction("Index");
        }
        return View(post);
    }

看法

这就是我试图在视图中打印作者姓名的方式,但是它只是将空间留空,我可以以相同的方式显示模型的所有其他属性。

@Html.DisplayFor(modelItem => item.Author.UserName)

为什么不显示作者用户名,为什么属性会显示在 AuthorId 而不是作者?

谢谢!

编辑 - 添加索引操作

    public IActionResult Index()
    {
        var posts= context.Posts;
        return View(posts);
    }

您应该将AuthorId添加到您的Post模型。

public class Post
{
    public string AuthorId { get; set; }

    [ForeignKey("AuthorId")]
    public AppUser Author { get; set; }
}

并将AuthorId设置为appUser.Id

post.AuthorId = appUser.Id;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM