我在我的身份模型中创建了一个身份证:
public class User : IdentityUser
{
// *** Custom field variables for users ***
public string FirstName { get; set; }
public string Surname { get; set; }
public string Position { get; set; }
public string Company { get; set; }
public string Country { get; set; }
public DateTime AccountOpen { get; set; }
// *** Custom field variables for users ***
public async Task<ClaimsIdentity> GenerateUserIdentityAsync(UserManager<User> manager)
{
// Note the authenticationType must match the one defined in CookieAuthenticationOptions.AuthenticationType
var userIdentity = await manager.CreateIdentityAsync(this, DefaultAuthenticationTypes.ApplicationCookie);
// Add custom user claims here
return userIdentity;
}
}
public class ApplicationDbContext : IdentityDbContext<User>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
// *** Modify table and primary key names ***
protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity<User>().ToTable("User").Property(p => p.Id).HasColumnName("UserID");
modelBuilder.Entity<IdentityUserRole>().ToTable("UserRole");
modelBuilder.Entity<IdentityUserLogin>().ToTable("UserLogin");
modelBuilder.Entity<IdentityUserClaim>().ToTable("UserClaim").Property(p => p.Id).HasColumnName("UserClaimID");
modelBuilder.Entity<IdentityRole>().ToTable("Role").Property(p => p.Id).HasColumnName("RoleID");
}
// *** Modify table and primary key names ***
}
我创建了一个简单的usercontroller,可以让我简单地查看数据库中的所有用户。我打算使用它来管理网站。
using System;
using System.Linq;
using System.Web.Mvc;
using Microsoft.AspNet.Identity;
using Microsoft.AspNet.Identity.EntityFramework;
using acme.Models;
namespace acme.Controllers
{
public class UsersController : Controller
{
ApplicationDbContext context = new ApplicationDbContext();
// GET: Users
public ActionResult Index()
{
var users = context.Users.ToList();
return View(users);
}
}
}
最后,我创建了查看页:
@model IEnumerable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@foreach (var user in Model)
{
<p><strong>@user.UserName</strong></p>
<p>@user.FirstName</p>
}
尽管 @user.username工作正常,但是 @user.firstname根本无法正常工作,并且生成错误'IdentityUser'不包含定义...
我已经检查了,数据库看起来不错(因为我在registerviewModel中定义了用户)。我似乎无法弄清楚自定义字段为什么不起作用。
原因是您使用的是默认身份用户,而不是自己的
更改
@model IEnumerable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser>
to:
@model IEnumerable<namespace.to.my.User>
实际上我已经解决了。我不需要:
@model IEnumerable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser>
因为我已经将列表传达到视图中。删除它后,一切都很好。
晚上睡眠的好处。