如何在ASP中从数据库中获取相关数据.. NET Core MVC



我是那种类型开发的新人,我想知道如何获得相关数据。

我有两个表AspNetUsersAccountsAccounts表中只有3列,Id,UserId加入AspNetUsers表,Amount。我要做的就是获取当前登录用户的账户信息

我正在尝试一些我在文档中发现的东西,它工作,但显示奇怪的结果:

Index.cshtml:

@page
@model IndexModel
@{
ViewData["Title"] = "Home page";
}
@using Microsoft.AspNetCore.Identity
@inject SignInManager<IdentityUser> SignInManager
@inject UserManager<IdentityUser> UserManager
@{
var user = await UserManager.GetUserAsync(User);
}
@if (SignInManager.IsSignedIn(User))
{
<div class="text-center">
<h1 class="display-4">Welcome back, @(user.Email.Split("@")[0])</h1>
</div>
<div>
<h5>Your balance: @Html.DisplayNameFor(model => model.account)</h5>
</div>
}
else
{
<div class="text-center">
<h1 class="mb-3">Welcome, new one here? Go on and create account!</h1>
</div>
}

Index.cshtml.cs:

public class IndexModel : PageModel
{
private readonly ILogger<IndexModel> _logger;
private readonly WebBankDbContext _context;
private readonly UserManager<IdentityUser> userManager;
private readonly SignInManager<IdentityUser> signInManager;
public IdentityUser user;
public Account account;
public IndexModel(SignInManager<IdentityUser> signInManager, UserManager<IdentityUser> userManager, ILogger<IndexModel> logger, WebBankDbContext context)
{
_logger = logger;
_context = context;
this.userManager = userManager;
this.signInManager = signInManager;
}
public async Task OnGetAsync()
{
if (signInManager.IsSignedIn(User))
{
user = await userManager.GetUserAsync(User);
account = (from st in _context.Accounts where st.UserId == user.Id select st).First();
}
}
}

我用断点调试这段代码,并发现,在account中有正确的信息,但在页面上它显示如下:

Your balance: account

怎么了?我该如何解决这个问题?谢谢。

DisplayNameFor显示模型的名称(您的值也在account.Amount中,而不仅仅是account)。

改成:

<h5>Your balance: @(Model.account.Amount)</h5>

最新更新