如何使用MS数据库(ASP.NET Core MVC)通过表显示信息



我创建了这个项目,它有一个使用标识的注册和登录页面。我为此关注了此视频。视频:https://www.youtube.com/watch?v=CzRM-hOe35o

我想测试一个想法,所以我想显示我在数据库中的用户信息。然而,我了解如何显示信息的唯一方法是使用_LoginPartial.chtml文件中的用户管理器选项(@UserManager.GetUserAsync(user(.Result.FirstName(。在我学习更多的过程中,我看到了这段视频,教你如何用表显示数据库中的信息。视频:https://www.youtube.com/watch?v=5wLfTRx2-FI

我有一些问题,他使用的是Sqlite,而我使用的是Microsoft SQL Server Management Studio 18。我试着像他一样,在家庭控制器中添加一个列表。但是,它的工作方式与他不同

我该如何适应他显示数据库信息的方式?或者有没有一种更简单的方式来显示信息?

这是我的密码。如果你需要更多信息,请告诉我

Index.chtml:

@{
ViewData["Title"] = "Home Page";
}
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>

家庭控制器:

using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using The_Bank_of_Cardinal.Areas.Identity.Data;
using The_Bank_of_Cardinal.Models;
namespace The_Bank_of_Cardinal.Controllers
{
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{

return View();
}
public IActionResult Privacy()
{
return View();
}

[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
}

位于区域中的模型>身份>数据文件夹

CardinalUser.cs:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
namespace The_Bank_of_Cardinal.Areas.Identity.Data
{
// Add profile data for application users by adding properties to the CardinalUser class
public class CardinalUser : IdentityUser
{
[PersonalData]
[Column(TypeName ="nvarchar(100)")]
public string FirstName { get; set; }
[PersonalData]
[Column(TypeName = "nvarchar(100)")]
public string LastName { get; set; }
[PersonalData]
[Column(TypeName = "nvarchar(500)")]
public string Street { get; set; }
[PersonalData]
[Column(TypeName = "nvarchar(100)")]
public string City { get; set; }
[PersonalData]
[Column(TypeName = "nvarchar(100)")]
public string State { get; set; }
[PersonalData]
[Column(TypeName = "nvarchar(100)")]
public string ZipCode { get; set; }
[PersonalData]
[Column(TypeName = "nvarchar(100)")]
public string LoginName { get; set; }
[PersonalData]
[Column(TypeName = "nvarchar(100)")]
public string SSN { get; set; }
[PersonalData]
[Column(TypeName = "int")]
public int AccountBalance { get; set; }




}
}

CardinalDbContext也位于同一文件夹中:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using The_Bank_of_Cardinal.Areas.Identity.Data;
namespace The_Bank_of_Cardinal.Data
{
public class CardinalDbContext : IdentityDbContext<CardinalUser>
{
public CardinalDbContext(DbContextOptions<CardinalDbContext> options)
: base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
// Customize the ASP.NET Identity model and override the defaults if needed.
// For example, you can rename the ASP.NET Identity table names and more.
// Add your customizations after calling base.OnModelCreating(builder);
}
}
}

_LoginPartial.chtml:

@using Microsoft.AspNetCore.Identity
@using The_Bank_of_Cardinal.Areas.Identity.Data
@inject SignInManager<CardinalUser> SignInManager
@inject UserManager<CardinalUser> UserManager

<ul class="navbar-nav">
@if (SignInManager.IsSignedIn(User))
{
<li class="nav-item">
<a id="manage" class="nav-link text-dark" asp-area="Identity" asp-page="/Account/Manage/Index" title="Manage">Hello @UserManager.GetUserAsync(User).Result.FirstName @UserManager.GetUserAsync(User).Result.LastName Balance: $@UserManager.GetUserAsync(User).Result.AccountBalance </a>
</li>
<li class="nav-item">
<form id="logoutForm" class="form-inline" asp-area="Identity" asp-page="/Account/Logout" asp-route-returnUrl="@Url.Action("Index", "Home", new { area = "" })">
<button id="logout" type="submit" class="nav-link btn btn-link text-dark">Logout</button>
</form>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link text-dark" id="register" asp-area="Identity" asp-page="/Account/Register">Register</a>
</li>
<li class="nav-item">
<a class="nav-link text-dark" id="login" asp-area="Identity" asp-page="/Account/Login">Login</a>
</li>
}
</ul>

程序.cs:

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace The_Bank_of_Cardinal
{
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
}

startup.cs:

using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.HttpsPolicy;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace The_Bank_of_Cardinal
{
public class Startup
{
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
public IConfiguration Configuration { get; }
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.AddControllersWithViews();
services.AddRazorPages();

}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
endpoints.MapRazorPages();
});
}
}
}
List<User> allusers = await UserManager.Users.ToListAsync();

现在枚举用户列表并呈现数据

foreach(User u in allusers)
{
u.FirstName + " " + u.LastName + " " + u.AccountBalance + "<br/>"
}

最新更新