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

我的目的是使用自動Id號將我的輸入記錄值添加到後端。但是當我點擊按鈕添加後,顯示內部服務器錯誤。記錄有時被保存到數據庫中。但Id是0.我已經設置Id屬性是Nullable。以下是我的添加功能和對象。我可以從你們聰明人那裏得到一些想法嗎?非常感謝你。如何使用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屬性不是可以爲空的值,它將被賦予一個0的默認值,除非EntityFramework知道它是一個自動增量(標識)字段。

+0

謝謝,夥計。我將Id屬性更改爲可爲空的int。但是現在添加和編輯點擊事件都會顯示「內部服務器錯誤」對話框。我將Application_EndRequest方法放在Global.aspx.cs中,但仍然不起作用。 :( – Auck

+0

否則,它會工作一段時間,名稱和地址數據保存到數據庫中,但Id仍然是0.內部服務器錯誤是下一個錯誤 – Auck

+0

我已經修復了所有錯誤並且運行良好。:) – Auck

相關問題