我正在尝试在Azure SQL数据库中托管的表中创建一个新行。我的前端是AngularJS,在.NET中使用C#作为后端。 这是我从前端传递对象的代码:
var insertTicket = function (newTicket) {
return $http.post("http://localhost:50412/api/tickets", JSON.stringify(newTicket))
.then(function (response) {
console.log(response);
console.log("Insert Successful");
return;
});
这是我的后端代码,它接收数据并尝试添加到数据库中:
[Route("api/tickets")]
public HttpResponseMessage Post(Ticket t)
{
TicketsRepository.InsertTicket(t);
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.OK);
return response;
}
在TicketRepisitory中:
public static void InsertTicket(Ticket tick)
{
var maxID = (from ticket in dataContext.Tickets
select ticket.id).Max();
var tick = new Ticket();
tick.id = maxID + 1;
dataContext.Tickets.Add(tick);
dataContext.SaveChanges();
}
这是我的Ticket课程:
public partial class Ticket
{
//Properties
public int id { get; set; }
public string title { get; set; }
public string customer { get; set; }
public string barcode { get; set; }
public string assignedTo { get; set; }
public string category { get; set; }
public string importance { get; set; }
public Nullable<System.DateTime> openDate { get; set; }
public Nullable<System.DateTime> dueDate { get; set; }
public Nullable<System.DateTime> closedDate { get; set; }
public string comments { get; set; }
public string condition { get; set; }
public Nullable<int> workHours { get; set; }
//Relationships
public Employee Employee { get; set; }
public Employee Employee1 { get; set; }
public Equipment Equipment { get; set; }
}
我认为问题在于Post()期待票证对象。我已经尝试过搜索如何接收JSON数据并将其用于Ticket,但运气不错 我的问题是我无法创建新行。我的数据库中没有反映任何变化。
答案 0 :(得分:0)
在AngularJS中使用$http
发布数据时,您不需要var insertTicket = function (newTicket) {
return $http.post("http://localhost:50412/api/tickets", newTicket)
.then(function (response) {
console.log(response);
console.log("Insert Successful");
return;
});
您的对象,只需将对象本身作为第二个参数传递,如下所示:
forceSelection
答案 1 :(得分:0)
首先,不需要在newticket javascript对象上调用JSON.stringify()方法作为$ http.post()方法的第二个参数。
然后在web api方法中编写一个名为newTicket的JObject类型的参数来接收发布的对象,并使用通用版本的ToObject方法将发布的数据转换为所需的类型。不要忘记使用[FromBody]属性作为方法参数。 webapi的代码如下所示:
{{1}}