当我尝试在我的应用中创建一个帐户时,它会抛出一个SQL异常:
类型' System.Data.SqlClient.SqlException'的异常发生在 System.Data.dll但未在用户代码中处理
附加信息:无法将值NULL插入列中 '用户名',表'&#39 ;;列不允许空值。 INSERT失败。
声明已经终止。
这是我的注册功能
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
{
// Attempt to register the user
try
{
WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
WebSecurity.Login(model.UserName, model.Password);
db.Users.Add(new User {
UserName = model.UserName,
FullName = model.FullName
});
db.SaveChanges();
return RedirectToAction("Index", "Home");
}
catch (MembershipCreateUserException e)
{
ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
}
}
// If we got this far, something failed, redisplay form
return View("Register","_RegisterLayout",model);
}
显然,我将所需的model.UserName
和model.Password
传递给函数,但它仍然会抛出错误,说它无法接受NULL值。
以下是我的全球Application_Start()
if(!WebMatrix.WebData.WebSecurity.Initialized)
WebSecurity.InitializeDatabaseConnection("DefaultConnection", "Users", "UserName", "FullName", autoCreateTables:true );
这是我的注册模式
public class RegisterModel
{
[Required]
[RegularExpression("[a-zA-Z0-9_-]{3,12}",ErrorMessage="Username must consist of between 3 and 12 characters (only letters, numbers, dashes, and underscores allowed)")]
[Display(Name = "User name")]
public string UserName { get; set; }
[Required]
[StringLength(50, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
[Display(Name = "Full Name")]
public string FullName { 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; }
}