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