【发布时间】:2021-04-15 22:05:26
【问题描述】:
我正在开发具有另一个类字段的用户注册。我的问题是我不明白如何将 Guid id 传递给类字段。
为了清楚起见, 我有一个 IdentityUser 模型:
public string Name { get; set; }
public string MiddleName { get; set; }
[Required]
public string Surname { get; set; }
public DateTime BirthDate { get; set; }
public string Address { get; set; }
[Required]
public string UserType { get; set; }
public bool ParentsAgreement { get; set; }
public Section BelongSection { get; set; }
我有 Section 模型:
[Required]
public Guid Id { get; set; }
public string Name { get; set; }
public string CoachName { get; set; }
public string SportComplexTitle { get; set; }
[IgnoreDataMember]
public ICollection<User> UsersList { get; set; }
DbContext 方法是:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
//section
modelBuilder.Entity<User>()
.HasOne(s => s.BelongSection)
.WithMany(a => a.UsersList);
modelBuilder.Entity<Section>()
.HasMany(s => s.UsersList)
.WithOne(a => a.BelongSection);
}
我的注册方式是:
public async Task<AuthenticationResult> RegisterAsync(RegisterModel registerModel)
{
var existingUser = await _userManager.FindByNameAsync(registerModel.Username);
if (existingUser != null)
{
return new AuthenticationResult
{
Errors = new[] { "User with such username already exists" }
};
}
var newUser = new User
{
Name = registerModel.Name,
Surname = registerModel.Surname,
BirthDate = registerModel.BirthDate,
UserName = registerModel.Username,
Email = registerModel.Email,
PasswordHash = registerModel.PasswordHash,
BelongSection = registerModel.BelongSection,
UserType = registerModel.UserType
};
var createdUser = await _userManager.CreateAsync(newUser, registerModel.PasswordHash);
if (!createdUser.Succeeded)
{
return new AuthenticationResult
{
Errors = createdUser.Errors.Select(x => x.Description)
};
}
return GenerateAuthenticationResultForUser(newUser);
}
它的注册模型与用户模型相同,我将部分作为一个类传递。 下一步是我使用 Angular 进行 Web 开发,我在下拉列表中获取部分名称列表,并将值作为每个部分的 id 传递。 所以,我有一个带有 Section Basketball 的下拉列表,它的值 == guid id。 这就是为什么,我将值 id 从 Angular 传递到服务器,我得到“错误将类型 Guid 转换为值 Models.Section”。 我该如何处理?
【问题讨论】:
-
您似乎包含了许多与“明确”相反的不相关代码。哪一行抛出错误?
标签: c# angular asp.net-core foreign-keys registration