Я пытаюсь расширить Простой членство, чтобы включить FirstName, SecondName и адрес электронной почты, однако у меня возникают некоторые проблемы с CreateUserAndAccount.WebSecurity.CreateUserAndAccount «Поле не существует»
Так в основном в RegisterModel я добавил следующее: -
[Display(Name = "First Name")]
[Required(ErrorMessage = "Text is required")]
public string FirstName { get; set; }
[Display(Name = "Second Name")]
[Required(ErrorMessage = "Text is required")]
public string SecondName { get; set; }
[Display(Name = "Email")]
[Required(ErrorMessage = "Email required")]
[RegularExpression(@"^\w+([-+.]*[\w-]+)*@(\w+([-.]?\w+)){1,}\.\w{2,4}$")]
public string ContactEmail { get; set; }
в Register.cshtml я добавил пользователь вводит: -
<li>
@Html.LabelFor(m => m.FirstName)
@Html.TextBoxFor(m => m.FirstName)
</li>
<li>
@Html.LabelFor(m => m.SecondName)
@Html.TextBoxFor(m => m.SecondName)
</li>
<li>
@Html.LabelFor(m => m.ContactEmail)
@Html.TextBoxFor(m => m.ContactEmail)
</li>
, а затем в AccountController.cs У меня есть следующее: -
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
try
{
var UserInfo =
new
{
FirstName = model.FirstName,
SecondName = model.SecondName,
ContactEmail = model.ContactEmail
};
WebSecurity.CreateUserAndAccount(model.UserName, model.Password, UserInfo);
WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
// If we got this far, something failed, redisplay form
return View(model);
}
Проблема в том, что когда он пытается сделать
WebSecurity.CreateUserAndAccount(model.UserName, model.Password, UserInfo);
Я получаю сообщение об ошибке следующего содержания: -
Недопустимое имя столбца 'Имя'.
Неверное имя столбца «Второе имя».
Недопустимое имя столбца 'ContactEmail'.
Это потому, что таблица пользователей не создается с полями? Если это так, как я могу создать эти поля. У меня уже есть набор инициализации
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
Любая помощь очень ценится.
Благодаря
** * *UPDATE* ** * ** * ** * ** * ** * ** * **
Это UserProfile
public class UserProfile : ProfileBase
{
[Display(Name = "First Name")]
public virtual string FirstName
{
get
{
return (this.GetPropertyValue("FirstName").ToString());
}
set
{
this.SetPropertyValue("FirstName", value);
}
}
[Display(Name = "Last Name")]
public virtual string LastName
{
get
{
return (this.GetPropertyValue("LastName").ToString());
}
set
{
this.SetPropertyValue("LastName", value);
}
}
[Display(Name = "Contact Email")]
public virtual string ContactEmail
{
get
{
return (this.GetPropertyValue("ContactEmail").ToString());
}
set
{
this.SetPropertyValue("ContactEmail", value);
}
}
public static UserProfile GetProfile(string username)
{
return Create(username) as UserProfile;
}
}
Я уже добавил их в UserProfile! Пожалуйста, см. Обновленный вопрос – Johann
. После дальнейшего расследования я решил пойти с двумя разными таблицами и сохранить таблицы членства в целости. – Johann