MVC5 Ajax调用更新数据库成功,但表没有新数据

时间:2015-08-31 12:56:28

标签: ajax asp.net-mvc asp.net-mvc-5

关于我的智慧结束了这一点。我是MVC5的新手,并尝试按照本教程使用Ajax更新我的数据库信息,但我遇到了太多问题。

我已经达到了我的ajax调用成功的程度,但没有任何内容插入到我的表中。

数据库名称:Company123

表名:Users

-----------------------------------------------------------
ID          Name          Desk_Number          Access_Level
-----------------------------------------------------------
PRIMARY AI  NULL          NULL                 NULL

然后我按照教程说的那样为我的数据库创建了一个类

public class Company123
{
    public int ID { get; set; }
    public string Name { get; set; }
    public double Desk_Number { get; set; }
    public double Access_Level { get; set; }
}

public class Company123Context : DbContext
{
    public DbSet<Company123> Users { get; set; }
}

然后,正如教程所建议的那样,我使用Entity Framework创建了一个名为Company123sController的控制器,它为更新方法留下了这个。

[HttpPost]
public ActionResult Create([Bind(Include = "Name, Desk_Number, Access_Level")] Company123 company123)
{
    if (ModelState.IsValid)
    {
        db.Users.Add(company123);
        db.SaveChanges();
        return RedirectToAction("Index");
    }

    return View(company123);
}

现在我的Index.cshtml我有一个脚本标签,它应该通过Ajax上传值,但是它无效。

<script>
$('a').click(function (event) {
    event.preventDefault();

    $name = "John";
    $deskNumber = 12.5;
    $accessLevel = 45.5;
    $.ajax({
        url: '@Url.Action("Create", "Company123s")',
        data: { 'Name': $name, 'Desk_Number': $deskNumber, 'accessLevel': $accessLevel },
        type: "post",
        cache: false,
        success: function () {
            console.log("Success");
        },
        error: function (xhr, ajaxOptions, thrownError) {
            console.log(xhr, ajaxOptions, thrownError);
        }
    })
})
</script>

现在我得到了成功&#34;在控制台中,但没有更新到我的桌子。

注意:

我没有使用我的信息的真实姓名,但它都是相对的。如果你看到一个奇怪的名字然后我可能已经滑倒并且忘了改变它但它应该都很好,我仔细检查。

2 个答案:

答案 0 :(得分:1)

使用以下代码代替Create action

    [HttpPost]
    public ActionResult Create([Bind(Include = "Name, Desk_Number, Access_Level")] Company123 company123)
    {
        if (ModelState.IsValid)
        {
            using (var context = new Company123Context())
            {
                try
                {
                    context.Users.Add(company123);
                    context.SaveChanges();
                    return RedirectToAction("Index");
                }
                catch (Exception ex)
                {
                    throw ex;
                }
            }
        }

        return View(company123);
    }

如果在保存记录时出现任何问题,它将抛出异常。 希望它能帮助您调试问题。 基本上我在您的代码中添加了try catch block

答案 1 :(得分:0)

我假设您使用Entity-Framework进行数据库工作。我不知道你在哪里创建数据库上下文以及你在哪里处理它。例程看起来应该是这样的:

using (var context = new MyDatabaseContext())
{
    var newZone = new Zone("My Zone");
    context.Zones.Add(newZone);
    context.SaveChanges();
}

尝试这样做。我怀疑你的上下文有问题,这就是你的数据库更新工作不正确的原因。

我还建议您像使用Ajax一样调试代码,否则可能看不到实际错误。