将数据保存到数据库SQL SERVER中的问题

时间:2016-09-15 14:28:21

标签: javascript angularjs asp.net-mvc-4

我在这里很新,所以如果我做错了让我知道,好吗? 我在网络开发方面也很陌生。

我在ASP.NET中使用post方法遇到问题。

请不要介意按钮和方法的名称,好吗?我是巴西人,他们的名字都是葡萄牙语。

我有一个提交按钮,调用名为AdicionarCliente()的ng-click(Angularjs)方法。

查看

     <div>
           <input type="submit" class="btn btn-info" value="Salvar" ng-click="AdicionarCliente()"/>
     </div>

的JavaScript

    myApp.controller('AdicionarClientesController', function ($scope, $http)                 {
$scope.NomeCliente = "";
$scope.Telefone1Cliente = "";
$scope.AdicionarCliente = function () {
    var promisse = $http.post("/app/AdicionarCliente/", { NomeCliente: $scope.NomeCliente, Telefone1Cliente: $scope.Telefone1Cliente })

    promisse.then(function () {
                    window.location.href = "CadastroPet";
                    return false;

        });
};

直到这部分才能正常运作。我点击提交按钮的所有时间都来到此处并在变量“promisse”中输入函数。

现在 - 问题在于:

控制器

     [HttpPost]
    public JsonResult AdicionarCliente(string NomeCliente, string Telefone1Cliente)
    {
        var db = new RexsoftEntities();
        db.CLIENTES.Add(new CLIENTES() { NOME = NomeCliente,
                                         TELEFONE1 = Telefone1Cliente});

            db.SaveChanges();

        var Clientes = db.CLIENTES.ToList();
       return Json(Clientes, JsonRequestBehavior.AllowGet);
    }

第一次点击提交按钮时,这里的代码会一直运行到代码的db.CLIENTES.Add部分 - 然后它不运行DB.SAVECHANGES(),也不运行其余的代码。它第二次像魅力一样工作。问题恰好发生在第一次提交命中。

由于控制器的返回没有正确发生,Javascript代码的最后部分也不会运行。这部分:

    window.location.href = "CadastroPet";
                return false;

任何人都可以帮助我吗?

(所有观点都在这个div里面

    <div ng-controller="AdicionarClientesController">

更新

我删除了提交按钮的TYPE并输入了简单的按钮类型。它似乎现在正在运作。那我该如何提交表格呢?

2 个答案:

答案 0 :(得分:0)

首先,根据EF最佳实践,尝试将db操作包装在using() { }块中。因此你的控制器就像

一样
[HttpPost]
public JsonResult AdicionarCliente(string NomeCliente, string Telefone1Cliente)
{
    var Clientes = new CLIENTES();
    using(var db = new RexsoftEntities()) 
    {
       var _Clientes = new CLIENTES() 
       { 
           NOME = NomeCliente,
           TELEFONE1 = Telefone1Cliente
       };
       db.CLIENTES.Add(_Clientes);
       db.SaveChanges();
       Clientes = db.CLIENTES.ToList();
    }
    return Json(Clientes, JsonRequestBehavior.AllowGet);
}

其次,在javascript方面,你使用的是angularjs。 window.location.href不会以角度方式工作(请参阅thisthis)。您必须使用$ window服务(来源:using angularjs $window service)或$ location服务(来源:using angularjs $location service)。另请避免使用return false;

在您的情况下,以下内容将有效。

promisse.then(function () {
    $location.path('/CadastroPet');
});

答案 1 :(得分:0)

我删除了提交按钮的TYPE并输入了简单的按钮类型。它似乎现在正在运作。 我创建了另一种使用我提到的相同js脚本验证表单的方法。如果没有达到标准,我会返回一条消息和一条返回虚假陈述。