【发布时间】:2014-06-24 10:57:45
【问题描述】:
我正在尝试创建自定义用户字段。我已添加到注册表中。一切正常,自动创建表,但字段 City 是 NULL。有人知道为什么会这样吗?
public class ApplicationUser : IdentityUser
{
public string City { get; set; }
}
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
static ApplicationDbContext()
{
Database.SetInitializer(new MySqlInitializer());
}
public ApplicationDbContext() : base("MySql.Data.MySqlClient")
{
}
}
MySqlInitializer.cs
public class MySqlInitializer : IDatabaseInitializer<ApplicationDbContext>
{
public void InitializeDatabase(ApplicationDbContext context)
{
if (!context.Database.Exists())
{
context.Database.Create();
}
else
{
var migrationHistoryTableExists = ((IObjectContextAdapter)context).ObjectContext.ExecuteStoreQuery<int>(
string.Format(
"SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = '{0}' AND table_name = '__MigrationHistory'",
"[users]"));
if (migrationHistoryTableExists.FirstOrDefault() == 0)
{
context.Database.Delete();
context.Database.Create();
}
}
}
}
Register.cshtml
<div class="form-group">
@Html.LabelFor(m => m.City, new { @class = "col-md-2 control-label" })
<div class="col-md-10">
@Html.TextBoxFor(m => m.City, new { @class = "form-control" })
</div>
</div>
AccountViewModels.cs在公共类RegisterViewModel中添加
[Required]
[Display(Name = "City")]
public string City { get; set; }
AccountController.cs
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
var user = new ApplicationUser() { UserName = model.UserName };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
await SignInAsync(user, isPersistent: false);
return RedirectToAction("Index", "Home");
}
else
{
AddErrors(result);
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
【问题讨论】:
-
你的控制器在你创建用户的地方是什么样子的?
-
你更新了RegisterViewModal吗?
标签: c# asp.net-mvc asp.net-mvc-4 asp.net-membership asp.net-identity