Я пытаюсь передать List в мой Web API, но всегда получаю нулевое значение.Я преобразую список в строку, прежде чем передать его в API.Как я могу отправить список в API и правильно обновить данные?Пожалуйста, помогите мне выяснить правильный код.Класс: MatrixProcessData.cs
namespace AHS.IBP.BO
{
[Serializable, DataContract]
public class MatrixProcessData
{
#region Variables
// private int _id;
private int _processYear;
private DateTime _processDate;
#endregion
#region Constructor
public MatrixProcessData()
{
// _id = 0;
_processYear = 0;
_processDate = DateTime.Today;
}
#endregion
#region Properties
[DatabaseGenerated(DatabaseGeneratedOption.None)]
[Key]
// [DataMember]
//public int ID { get { return _id; } set { _id = value; } }
[DataMember]
public int ProcessYear
{
get { return _processYear; }
set { _processYear = value; }
}
[DataMember]
public DateTime ProcessDate
{
get { return _processDate; }
set { _processDate = value; }
}
#endregion
}
}
Метод вызова API:
public void ProcessData()
{
DataSet dsProcessData = new DataSet();
dsProcessData = new TempMatrixClass().GetProcessData(DateTime.Now.Year,771);
List<MatrixProcessData> li = new List<MatrixProcessData>();
if (dsProcessData.Tables[0].Rows.Count > 0)
{
foreach (DataRow dr in dsProcessData.Tables[0].Rows)
{
MatrixProcessData mtrixProcessData = new MatrixProcessData();
mtrixProcessData.ProcessYear = Convert.ToInt32(dr["ProcessYear"]);
mtrixProcessData.ProcessDate = Convert.ToDateTime(dr["ProcessDate"]);
li.Add(mtrixProcessData);
}
string apiUrl = string.Format("{0}api/MatrixProcessData/{1}/", aplilink, 2019);
HttpClient httpClient = new HttpClient();
httpClient.MaxResponseContentBufferSize = 256000;
string strObject = Newtonsoft.Json.JsonConvert.SerializeObject(li, Newtonsoft.Json.Formatting.None);
HttpContent httpContent = new StringContent(strObject, Encoding.UTF8, "application/json");
var response = httpClient.PutAsync(apiUrl, httpContent, new System.Threading.CancellationToken(false)).Result;
if (response != null && response.IsSuccessStatusCode)
{
var data = response.Content.ReadAsStringAsync().Result;
// mtrixProcessData = Newtonsoft.Json.JsonConvert.DeserializeObject<MatrixProcessData>(data);
}
}
}
Метод API PUT контроллера (список) получает значение null: MatrixProcessDataController.cs
[Route("{processyear}")]
[ResponseType(typeof(List<MatrixProcessData>))]
public IHttpActionResult PutmatrixProcessData(int processyear, List<MatrixProcessData> matrixProcessData)
{
foreach (var item in matrixProcessData)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.Entry(matrixProcessData).State = EntityState.Modified;
if (!matrixProcessDataExists(item.ProcessYear, item.ScenarioID, item.ModuleID, item.MeasureID, item.SKUID, item.ProcessDate))
{
db.MatrixProcessDatas.Add(item);
}
db.SaveChanges();
}
return StatusCode(HttpStatusCode.NoContent);
}