gpt4 book ai didi

asp.net-mvc - 如果用户具有复杂类型,MVC 用户存储的 IUserStore.Create 将失败

转载 作者:行者123 更新时间:2023-12-04 04:47:01 26 4
gpt4 key购买 nike

我正在使用 Visual Studio 的 ASP.Net MVC 5。我想创建一个复杂类型的用户配置文件。我修改了User的代码类(class) IdentityModels.cs文件。这是代码:

public class User : IUser
{
public User()
: this(String.Empty)
{
}

public User(string userName)
{
UserName = userName;
Id = Guid.NewGuid().ToString();
}

[Key]
public string Id { get; set; }

public string UserName { get; set; }

public string Phone { get; set; }
public string MobilePhone { get; set; }
public string Email { get; set; }
public string Address { get; set; }
}

我还更改了此模型的 View 。这很好用,没有任何问题。但是,如果我更改 Address 的类型以上属性为 Address ,意思是: public Address Address { get; set; }它失败了。

我试过使用 virtual关键字,但它没有用。请注意,每次我从头开始创建数据库表时。另外,我检查了数据库,信息已使用正确的外键插入到数据库中,但我不知道问题是什么。

以下代码中的代码执行失败 await Users.Create(user)返回 false :
    public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
try
{
// Create a profile, password, and link the local login before signing in the user
User user = new User(model.UserName)
{
UserAddress = model.Address,
Email = model.Email,
Phone = model.Phone,
MobilePhone = model.MobilePhone
};
if (await Users.Create(user) &&
await Secrets.Create(new UserSecret(model.UserName, model.Password)) &&
await Logins.Add(new UserLogin(user.Id, IdentityConfig.LocalLoginProvider, model.UserName)))
{
await SignIn(user.Id, isPersistent: false);
return RedirectToAction("Index", "Home");
}
else
{
ModelState.AddModelError(String.Empty, "Failed to create login for: " + model.UserName);
}
}
catch (DbEntityValidationException e)
{
ModelState.AddModelError("", e.EntityValidationErrors.First().ValidationErrors.First().ErrorMessage);
}
}

// If we got this far, something failed, redisplay form
return View(model);
}

更新:

这是 Address类,以防你想知道:
public class Address
{
public int ID { get; set; }

[Required]
public string Country { get; set; }

[Required]
public string City { get; set; }

[Required]
public string Street { get; set; }

[Required]
public string PostalCode { get; set; }
}

更新 2

这是输入数据的图像:
enter image description here

最佳答案

似乎这是一个错误。在得到绝对证明之前,我不会选择它作为答案。但是,当我从以下位置更改 Controller 代码时:

                if (await Users.Create(user) &&
await Secrets.Create...

到:
                await Users.Create(user);
if (await Secrets.Create...

它可以正常工作。在我看来,这应该是一个错误,因为我可以 负载编辑 数据完美。

这意味着由于某种原因,即使 IUserStore.Create成功,如果模型是复杂类型,则返回 false。

关于asp.net-mvc - 如果用户具有复杂类型,MVC 用户存储的 IUserStore.Create 将失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18033548/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com