无法进入数据库

时间:2015-08-04 22:56:17

标签: asp.net-mvc linq model

当我尝试在数据库中抛出某些内容时,它就不会进入数据库。

我试图调试它,根本没有任何东西。

create.cshtml

<div class="row">
   <div class="form-group">
     <div class="col-md-12">
       <label>E-Mail</label>
       @Html.EditorFor(model => model.Email, new { htmlAttributes = new { @class = "form-control input-lg", placeholder = "Skriv email", } })
       @Html.ValidationMessageFor(model => model.Email)
     </div>
   </div>
</div>

UsersAccount.cs(型号)

namespace MentorOrdblind_MVC.Models.Konto
{
    public class UsersAccount
    {
        [Key]
        public int UserId { get; set; }

        [Display(Name = "EmailAddress")]
        [DataType(DataType.EmailAddress)]
        [Required(ErrorMessage="Husk at skriv en email!")]
        public string Email { get; set; }
    }
}

KontoController.cs(Controller)

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult CreateUsers(UsersAccount UsersAccount)
{
    if (ModelState.IsValid)
    {
        var CreateAnAccount = db.Users.FirstOrDefault(b => b.Email == UsersAccount.Email);
        if (CreateAnAccount == null)
        {
            CreateAnAccount.Email = UsersAccount.Email;//email
            db.Users.InsertOnSubmit(CreateAnAccount);
            db.SubmitChanges(); // save
            RedirectToAction("login", "KontoController");
        }
        else
        {
            ViewBag.MessageError = "Denne brugere findes i vores system.";
        }
    }
   return View();

}

直到它完全没有错误,但是数据库中没有公开,如果我把它留空,则不会写错误消息!

我怎么可能没有进入数据库。和yes表格写的确实等,但把它扔进数据库。

2 个答案:

答案 0 :(得分:1)

var CreateAnAccount = db.Users.FirstOrDefault(b => b.Email == UsersAccount.Email);

表示您使用该电子邮件找到第一个User。你的下一行代码是

if (CreateAnAccount == null)

这意味着如果找到了用户,那么将永远不会调用此代码块中的代码,因此您永远不会将任何内容保存到数据库中。另一方面,如果没有找到用户,那么if

中的第一行代码
CreateAnAccount.Email = UsersAccount.Email;

会抛出NullReferenceException,因为CreateAnAccountnull,您无法访问null的属性。

将您的代码更改为

var CreateAnAccount = db.Users.FirstOrDefault(b => b.Email == UsersAccount.Email);
if (CreateAnAccount != null)
{
    ....

答案 1 :(得分:0)

试试这个:

//Why this
var server = require ("socket.io");
var io = new server ();
// Why not this
var server = require ("socket.io");
var io = server ();

或更好

if (CreateAnAccount == null)
{
    CreateAnAccount = new UsersAccount();
    ....

修改

if (CreateAnAccount == null)
{
    // should just content into the database.
    db.Users.InsertOnSubmit(UsersAccount);

    // must save the contents.
    db.SubmitChanges(); // save

   ...