[英]How to post List of data in asp.net web api
我想将我的json
数据从Xamarin.Forms
应用程序发布到我的asp.net web api
。
我的模型类
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; }
}
我的控制器代码如下:
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;
}
}
我的 RestService 代码如下:
我的模型 2 模型 1:
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;
}
我的按钮事件处理程序是
MyModel2 OOmodel;
private async void OnOrderPlace(object sender, EventArgs e)
{
OOmodel = await OOrest.SaveOrder();
}
当我按下按钮时,我会得到 json 数据,例如
Json 结果图像:
但在我的asp.net web api
结果上似乎是这样
Asp.net Web API
结果: 如您所见, ListOrder
为空,但是在我的应用程序中,我也在发送它的数据。 我还尝试使用邮递员,因为我也在我的服务器资源管理器中获得了 201 代码(成功或生成)-> Order2 表我在 Orders2 表中获得了海报值,但不在服务器上。
要强制 Web API 从请求正文中读取简单类型,请将FromBody
属性添加到参数
// POST: api/MyModel2
[ResponseType(typeof(MyModel2))]
public async Task<IHttpActionResult> PostMyModel2([FromBody] MyModel2 myModel2)
然后在GetMyModel2
方法中
// GET: api/MyModel2
public IQueryable<MyModel2> GetMyModel2()
{
return db.MyModel2.Include(x => x.ListOrder);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.