2017-08-14 10 views
0
<button class="btn btn-primary" data-bind="click:function(){show('add');}">Add</button> 

私の目的は、入力レコードの値を自動的にID番号でバックエンドに追加することです。しかし、私がボタンをクリックした後に、私に内部サーバーエラーを表示します。レコードは時々データベースに保存されました。 Idは0だった。私はすでにIdプロパティをNullableに設定している。以下は私のAdd関数とオブジェクトです。あなたからスマートな人たちのアイデアを得ることができますか?どうもありがとうございました。ASP.NET MVCとKnockoutJSを使用してレコードを追加するには?

self.addCustomer = function() { 
    debugger; 
    var cus = { Name : self.cusName(), Address: self.cusAddress()} 
    var url = "/Customer/AddCustomer"; 
    $.ajax({ 
     type: "POST", 
     url: url, 
     data: cus, 
     success: function (data) { 
      alert("Insert Successful!"); 
      GetCustomers(); 
      $('#AddCustomer').modal('hide'); 
     }, 
     error: function (error) { 
      alert(error.statusText); 
     } 
    }); 
}; 
self.customers = ko.observableArray([]); 
GetCustomers(); 
function GetCustomers() { 
    $.ajax({ 
     type: "GET", 
     url: "/Customer/GetCustomer", 
     contentType: "application/json;charset=utf-8", 
     dataType: "json", 
     success: function (data) { 
      self.customers(data); 
     }, 
     error: function (error) { 
      alert(error.statusText); 
     } 
    }); 
} 
self.getSelected = function (cus) { 
    self.cusId(cus.Id), 
    self.cusName(cus.Name), 
    self.cusAddress(cus.Address) 
}; 

バックエンドのポストアクション。

[HttpPost] 
    public ActionResult AddCustomer(CustomerModel customer) 
    { 
     var cus = new Customer 
     { 
      //Id = customer.Id, 
      Name = customer.Name, 
      Address = customer.Address 
     }; 
     customerContext.Customers.Add(cus); 
     customerContext.SaveChanges(); 
     return null; 
    } 

答えて

1

デシリアライズするとき一方がデータで指定されていない場合、コントローラのエンドポイントのための全てのパラメータが「デフォルト」の値が与えられます。 C#の整数のデフォルト値は0です。そうでないと特に言わない限り、CustomerModelのすべての整数プロパティは0になります。

私はCustomerModel.IDはあなたがそのコードを含んでいないのでintであると仮定しています。それが正しい場合は、代わりにnullable<int>にしてください。こうすると、値が指定されていない場合、デフォルト値はnullになります。

同じ問題がCustomerエンティティモデルにも適用されます。そのIDプロパティがnull値でない場合、EntityFrameworkが自動インクリメント(ID)フィールドであることが分かっていない限り、デフォルト値が0になります。

+0

ありがとうございます。 Idプロパティをnull可能なintとして変更します。しかし、クリックイベントの追加と編集の両方で、常に「内部サーバーエラー」ダイアログが表示されます。私はApplication.EndRequestメソッドをGlobal.aspx.csに入れましたが、まだ動作していません。 : – Auck

+0

それ以外の場合は、しばらくの間、データベースに保存されている名前と住所のデータが、IDはまだ0です。内部サーバーのエラーは次のバグです – Auck

+0

私はすでにすべてのバグを修正し、 :) – Auck

関連する問題