Я работаю над небольшим проектом по изучению Angular7 с ASP WebAPI2. Когда я публикую сообщения с использованием http.post (), контроллер веб-API ASP не получает никакого значения, а для obj устанавливается значение null.
Я пытался реализовать аналогичные коды в других частях приложения и работает нормально.
Мой WebAPI выглядит так -
[Route("api/rota/InsertRota")]
[HttpPost]
public HttpResponseMessage InsertRota(Models.HelpdeskStaffRota paraStaffRota)
{
try
{
string conString = ConfigurationManager.ConnectionStrings["HelpdeskStaffRota"].ConnectionString;
using (SqlConnection conn = new SqlConnection(conString))
using (SqlCommand comm = new SqlCommand("RotaInsert", conn))
{
conn.Open();
comm.CommandType = System.Data.CommandType.StoredProcedure;
comm.Parameters.Add(new SqlParameter("@RotaDate", paraStaffRota.RotaDate));
comm.Parameters.Add(new SqlParameter("@RotaMorning", paraStaffRota.RotaMorning));
comm.Parameters.Add(new SqlParameter("@RotaLunch", paraStaffRota.RotaLunch));
comm.Parameters.Add(new SqlParameter("@RotaLate", paraStaffRota.RotaLate));
comm.ExecuteNonQuery();
conn.Close();
}
List<Models.HelpdeskStaffRota> items = GetItems();
return Request.CreateResponse(HttpStatusCode.OK, items);
}
catch (System.Exception e)
{ return Request.CreateResponse(HttpStatusCode.SeeOther, e.Message); }
}
и модель asp -
public class HelpdeskStaffRota
{
public Int64 Id { get; set; }
[Required(ErrorMessage = "Please select a date")]
public DateTime RotaDate { get; set; }
[Required(ErrorMessage = "Please select a Staff for Morning")]
public string RotaMorning { get; set; }
[Required(ErrorMessage = "Please select a Staff for Lunch")]
public string RotaLunch { get; set; }
[Required(ErrorMessage = "Please select a Staff for Late")]
public string RotaLate { get; set; }
public string RotaDateString {
get
{
return this.RotaDate.ToString("dd/MM/yyyy");
}
set
{
this.RotaDate = DateTime.ParseExact(value, "dd/MM/yyyy", CultureInfo.InvariantCulture);
}
}
}
А Угловой сервис -
addRota(rota: Rota) {
const addRotaURL = `${this.baseURL}api/rota/InsertRota`;
return this.http.post(addRotaURL, rota);
}
и англуар рота класса -
export class Rota {
Id: number;
RotaDate: Date;
RotaMorning: string;
RotaLunch: string;
RotaLate: string;
}
Если я перехожу в режим отладки, я вижу, что в угловом коде действительно установлено значение объекта, и я вижу, что он достигает точек останова внутри контроллера, однако значение для paraStaffRota равно нулю. Я ожидаю, что paraStaffRota (контроллер веб-API) = Rota (отправлено из углового).
Любая помощь будет принята с благодарностью.