I want to post my json data from Xamarin.Forms application to my asp.net web api.
My Models Class
public class MyModel2
{
public int Id { get; set; }
public string ShopName { get; set; }
public List<Order2> ListOrder { get; set; }
}
public class Order2
{
public int Id { get; set; }
public string ProductName { get; set; }
}
My Controller code is below :
public class MyModel2Controller : ApiController
{
private MPTContext db = new MPTContext();
// GET: api/MyModel2
public IQueryable<MyModel2> GetMyModel2()
{
return db.MyModel2;
}
// GET: api/MyModel2/5
[ResponseType(typeof(MyModel2))]
public async Task<IHttpActionResult> GetMyModel2(int id)
{
MyModel2 myModel2 = await db.MyModel2.FindAsync(id);
if (myModel2 == null)
{
return NotFound();
}
return Ok(myModel2);
}
// PUT: api/MyModel2/5
[ResponseType(typeof(void))]
public async Task<IHttpActionResult> PutMyModel2(int id, MyModel2 myModel2)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
if (id != myModel2.Id)
{
return BadRequest();
}
db.Entry(myModel2).State = EntityState.Modified;
try
{
await db.SaveChangesAsync();
}
catch (DbUpdateConcurrencyException)
{
if (!MyModel2Exists(id))
{
return NotFound();
}
else
{
throw;
}
}
return StatusCode(HttpStatusCode.NoContent);
}
// POST: api/MyModel2
[ResponseType(typeof(MyModel2))]
public async Task<IHttpActionResult> PostMyModel2(MyModel2 myModel2)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.MyModel2.Add(myModel2);
await db.SaveChangesAsync();
return CreatedAtRoute("DefaultApi", new { id = myModel2.Id }, myModel2);
}
// DELETE: api/MyModel2/5
[ResponseType(typeof(MyModel2))]
public async Task<IHttpActionResult> DeleteMyModel2(int id)
{
MyModel2 myModel2 = await db.MyModel2.FindAsync(id);
if (myModel2 == null)
{
return NotFound();
}
db.MyModel2.Remove(myModel2);
await db.SaveChangesAsync();
return Ok(myModel2);
}
protected override void Dispose(bool disposing)
{
if (disposing)
{
db.Dispose();
}
base.Dispose(disposing);
}
private bool MyModel2Exists(int id)
{
return db.MyModel2.Count(e => e.Id == id) > 0;
}
}
My RestService Code is below:
MyModel2 model1:
public async Task<MyModel2> SaveOrder()
{
model1 = new MyModel2
{
ShopName = "MMSHop",
ListOrder = new List<Order2>()
{
new Order2
{
ProductName = "MMPRoduct"
}
}
};
var data = JsonConvert.SerializeObject(model1);
var content = new StringContent(data, Encoding.UTF8, "application/json");
var result = await client.PostAsync(MainUrl, content);
return model1;
}
My Button Event Handler is
MyModel2 OOmodel;
private async void OnOrderPlace(object sender, EventArgs e)
{
OOmodel = await OOrest.SaveOrder();
}
When I press the button I get json data like
Json Result Image:

but on my asp.net web api result seems like that
Asp.net Web API result:
as you see ListOrder is null however in my application I am also sending its data.
I also try to use postman from that i get 201 code (successful or generated) also in my Server Explorer --> Order2 Table i get poster values in Orders2 Table but not on server.