作为用户属性的值列表
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;
}
我在 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;
}