ASP.NET核心MVC如何通过UserID外键在ListRazorTemplate中显示SQL表中的数据



我有一个像AspNetUsers和其他人一样的Identity表。我从AspNetUsers表中创建了具有外键UserID到Id的迁移文件,用于在具有登录用户Id的Files表中保存文件。但在我的FileManager视图中,我看到了Files表中的所有文件,但我只需要显示来自AspNetUsers的UserID=Id的文件(我的意思是具有登录用户的Id(。我该怎么做?

我想我需要在FileManager函数中编辑一些信息,但我对此没有信心。如果你需要来自控制器或我的ASP.NET Core项目中的其他文件的更多代码,我可以帮你。

这段代码来自我的WorkSpaceController,它具有上传新文件和其他功能,但这个FileManager函数从var中的上下文中获取数据,并显示在FileManagerView:上

private readonly TextCloudContext Context;
public IActionResult FileManager()
{
var items = Context.Files.ToList();
return View(items);
}

这是TextCloudContext代码:

namespace TextCloud.Data
{
public class TextCloudContext : IdentityDbContext<TextCloudUser>
{
public TextCloudContext(DbContextOptions<TextCloudContext> options) : base(options)
{
}
public DbSet<File> Files { get; set; }
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
}

希望你们能帮助我!另外,文件dbo具有UserId外键,该外键引用AspNetUsers表中的Id。我使用"添加迁移"命令和"更新数据库"创建了"文件"表,所以它运行良好,并使用当前用户Id存储文件,但我需要在ListRazorView(FileManager.cs.html(中仅显示当前登录用户的信息。

在我的FileManager视图中,我看到了files表中的所有文件,但我只需要显示AspNetUsers中UserID=Id的文件(我指的是登录用户的Id(。我该怎么做?

要实现上述要求,可以尝试调用UserManager.GetUserId(ClaimsPrincipal(方法来获取用户id,然后根据检索到的用户id查询文件,如下所示。

//get user id of current logged-in user 
var currentUserId = _userManager.GetUserId(User);
var items = Context.Files.Where(f => f.UserID == currentUserId).ToList();
return View(items);

最新更新