Tôi khá chắc chắn rằng tôi đã làm theo tất cả các bước, nhưng dường như đã bỏ lỡ một cái gì đó. Sử dụng simplemembership trong ứng dụng MVC4. Thêm Email vào bảng UserProfile và trong các mô hình Đăng ký và UserProfile, thêm nó vào phương thức Đăng ký, nhưng vẫn nhận được lỗi. Dưới đây là một số mã:SimpleMembership - Thêm email vào UserProfile - System.Data.SqlClient.SqlException: Tên cột "Email" không hợp lệ lỗi
Models:
public class UserProfile
{
public int UserId { get; set; }
public string UserName { get; set; }
public string Email { get; set; }
}
public class RegisterModel
{
[Display(Name = "Email Address")]
[StringLength(20)]
// [Required]
public string Email { get; set; }
[Display(Name = "Date of Birth")]
// [Required]
public DateTime DOB { get; set; }
[Required]
[System.Web.Mvc.Remote("VerifyUserExists", "Account", ErrorMessage="That Username is already taken.")]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[StringLength(100, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[DataType(DataType.Password)]
[Display(Name = "Confirm password")]
[Compare("Password", ErrorMessage = "The password and confirmation password do not match.")]
public string ConfirmPassword { get; set; }
}
Bộ điều khiển:
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
try
{
WebSecurity.CreateUserAndAccount(model.UserName, model.Password, new { Email = model.Email });
WebSecurity.Login(model.UserName, model.Password);
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
Tôi không cố gắng sử dụng địa chỉ email như đăng nhập, chỉ muốn lấy nó trong bước đăng ký để Tôi có thể gửi email xác nhận tự động.
Tôi đã thử với bảng UserProfile được bao gồm trong mô hình EF, và với nó ra, không có sự khác biệt. Tôi đã xác nhận bảng trong DB có một cột Email.
Những gì bạn có ở đây có vẻ tốt. Có thể bạn có nhiều cơ sở dữ liệu mà bạn không biết (như một tệp). Tại điểm nào trong quá trình thực hiện, bạn có nhận được lỗi không? – Jasen
Lỗi trên dòng này: WebSecurity.CreateUserAndAccount (model.UserName, model.Password, mới {Email = model.Email}); Thư mục AppData trống và các chuỗi kết nối duy nhất đi đến cá thể localdb của tôi trong SQL Server 2012, trong đó db là. Tôi đã nghiên cứu phương pháp CreateUserAndAccount để tìm ra nơi mà nó đang cố gắng tiết kiệm, nhưng đã đến với không có gì cho đến nay. – BattlFrog
Khi bạn gọi 'WebSecurity.InitializeDatabaseConnection', chuỗi kết nối nào bạn đang sử dụng (và đó là cơ sở dữ liệu đúng)? –