我正在使用 Visual Studio 中的 ASP.Net MVC 5。我想创建一个具有复杂类型的用户配置文件。我已经修改了文件中User
类的代码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; }
}
我还更改了此模型的视图。这很好用,没有任何问题。但是,如果我将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
这是输入数据的图像: