作为用户属性的值列表

List of values as a user attribute

我在 ASP.NET MVC 5 应用程序中使用 identity 2.1.0,并且我有供管理员使用的页面(create/edit/delete 用户)和我定义的一些自定义用户属性。但是我需要在一个字段中存储一个值列表。我如何通过使用身份来实现这一点,以及如何在网页上显示这一点?

要保存这些值,您可以扩展 ApplicationUser,如果有多个值,您可以通过 n:m 关系来实现:

首先创建一个 table 来存储国家/地区值(也添加到您的 DbContext,例如 public DbSet<Country> Countries { get; set; }):

public class Country
{
    [Key]
    public int Id { get; set; } // or e.g. "string Code" to save e.g. "us"

    public string Name { get; set; }

    public List<ApplicationUsers> Users { get; set; }
}

然后您还可以将 Country 的列表添加到您的 ApplicationUser:

public class ApplicationUser : IdentityUser<KEY>
{
     // ...

     public List<Country> Countries { get; set; }
}

最后更新用户的国家,如下所示:

var user = // get user
var countryToAdd = db.Countries.FirstOrDefault(c => c.Name == countryName) ??
                       new Country() { Name = countryName };
if (user.Countries == null)
    user.Countries = new List<Country>() { countryToAdd };
else if (!user.Countries.Contains(countryToAdd))
    user.Countries.Add(countryToAdd);

db.SaveChanges();

并获取来自一个国家/地区的所有用户:

var country = db.Countries.Include(c => c.Users)
                .FirstOrDefault(c => c.Name == countryName);
if (country != null)
{
    var users = country.Users;
}