2016-09-15 9 views
1

私はここでかなり新しいので、何か間違ったことをすれば教えてください。 私はWeb開発においてもかなり新しいです。データベースにデータを保存する際の問題SQL SERVER

ここでは、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()やその他のコードはここでは実行しません。 2回目は魅力のように働きます。問題はちょうど最初の提出ヒットで起こります。

コントローラのリターンが適切に行われないため、JavaScriptコードの最後の部分も実行されません。この部分は

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

誰でも手伝ってもらえますか?私は送信ボタンの種類を削除

UPDATE

と簡単なボタンタイプを入れ

(これは

<div ng-controller="AdicionarClientesController"> 

DIV内のすべてのビューがあります)。それは今働いているようだ。どうすれば私のフォームを提出できますか?

+0

おそらく、データベース挿入が発生したときに何らかの例外が発生しています。 Visual Studioでデバッグすると、実行が中断され、エラーが報告されますか? – ADyson

+0

@ user3127450:投げていると例外/エラーを確認できますか?ここにエラーログを投稿してください。人々が答えられるように! –

+0

@ADysonそうではありません。それは奇妙な部分です。そして、私がデータベースをチェックするとき、値はそこにあります - それでそれは保存されました。 – user3127450

答えて

0

送信ボタンのTYPEを削除してシンプルなボタンタイプを追加しました。それは今働いているようだ。 私が言及したのと同じjsスクリプトを使用してフォームを検証する別の方法を作成しました。基準が満たされなかった場合は、メッセージと返品虚偽の陳述が返されます。

0

最初に、EFベストプラクティスに従って、using() { }ブロックにdb操作をラップしようとします。したがって、あなたのコントローラーは好きです

[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); 
} 

第2に、JavaScript側では、anglejsを使用しています。 window.location.hrefは角度では機能しません(thisthisを参照)。 $ウィンドウサービス(ソース:using angularjs $window service)または$ロケーションサービス(ソース:using angularjs $location service)を使用する必要があります。 return false;の使用も避けてください。

あなたの場合、以下が動作します。

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

返信用Thx!私は "Clientes = db.CLIENTES.ToList();"という行に変換問題があります。 System.Data.Entity .DbSet RexsoftEntities.CLIENTES {get; 'System.Collections.Generic.List を' Rexsoft.Clientes 'に暗黙的に変換できません – user3127450

+0

送信ボタンのTYPEを削除し、単純なボタンタイプを入力しました。それは今働いているようだ。どうすれば私のフォームを提出できますか?あなたの最初のコメントに関して、 – user3127450

+0

@ user3127450: 'var Clientes = new CLIENTES();'と 'Clientes = db.CLIENTES.ToList();'これはリストを単一のオブジェクトに割り当てようとしています。どうして? ToList()コマンドは無関係なようです - なぜクライアントを返すのですか? – ADyson

関連する問題