私はいくつかのデータを渡すためにWeb APIを呼び出すMVCアプリケーションを持っています。ここで空のJson配列が投稿で受信されました
MVC符号
[AcceptVerbs(HttpVerbs.Post)]
public async System.Threading.Tasks.Task<ActionResult> StudentViewModels_Create([DataSourceRequest]DataSourceRequest request, [Bind(Prefix = "models")]IEnumerable<StudentViewModel> studentviewmodels)
{
using (System.Net.Http.HttpClient client = new System.Net.Http.HttpClient())
{
string baseUrl = "http://localhost:51514/api/Students";
client.BaseAddress = new Uri(baseUrl);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json"));
JArray postData = new JArray();
//postData.Add(JsonConvert.SerializeObject(request));
foreach(StudentViewModel student in studentviewmodels)
{
postData.Add(JsonConvert.SerializeObject(student));
}
// call the web-api and pass the data
System.Net.Http.HttpResponseMessage response = await client.PostAsync(baseUrl, new StringContent(new JavaScriptSerializer().Serialize(postData), Encoding.UTF8, "application/json"));
if (!response.IsSuccessStatusCode)
{
var data = response.Content.ReadAsStringAsync();
}
}
// this will return new data
//return Json("");
}
は、それがしかし、コールは、APIに達したときに
に送信される前POSTDATA変数であるデータの写真であります、Json配列は空です。
のWeb-API
public IHttpActionResult Students_Create(JArray inputData)
{
var students = new List<Student>();
for (int i = 1; i<inputData.Count; i++)
{
var tempStudent = new Student();
tempStudent = (Student)JsonConvert.DeserializeObject(inputData[i].ToString());
students.Add(tempStudent);
}
// Will keep the inserted entitites here. Used to return the result later.
var entities = students;
if (ModelState.IsValid)
{
using (var northwind = new StudentEntities())
{
foreach (var student in students)
{
// Create a new Student entity and set its properties from the posted StudentViewModel.
var entity = new Student
{
Studentid = student.Studentid,
Firstname = student.Firstname,
Lastname = student.Lastname,
Age = student.Age
};
// Add the entity.
northwind.Students.Add(entity);
// Store the entity for later use.
entities.Add(entity);
}
// Insert the entities in the database.
northwind.SaveChanges();
}
}
return Json(db.Students);
}
引数inputDataの
絵変数
任意のアイデアこれが起こっている理由として?。助けてくれてありがとう。
私はこれの一部に少し不安定だけど、あなたは、 ')' client.PostAsync(baseUrlに、POSTDATA、Encoding.UTF8、 "アプリケーション/ JSONを")待って試してみましたか?フレームワークはあなたのために 'postData'をシリアル化する必要があります - おそらくあなたはそれを文字列にシリアライズしていますし、フレームワークは再び文字列をシリアライズしています、そして受信APIはあなたがJArrayではなく文字列として送信しているものを解釈するかもしれません。暗闇の中でただ一発。 –
エラーが発生する** 'Newtonsoft.Json.Linq.JArray'から 'string'に変換できない** – nahaelem