值列表作为用户属性

时间:2015-01-27 11:23:19

标签: c# asp.net asp.net-mvc-4 asp.net-identity-2

我在ASP.NET MVC 5应用程序中使用身份2.1.0,并且我有一些页面供管理员使用我定义的一些自定义用户属性工作(创建/编辑/删除用户)。但是,我需要在一个字段中存储值列表。如何通过使用身份以及如何在网页上显示此内容来实现此目的?

1 个答案:

答案 0 :(得分:1)

要保存此类值,您可以扩展ApplicationUser,如果有多个值,您可以通过n:m关系执行此操作:

首先创建一个表来存储国家/地区值(也添加到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;
}