我将单个JSON类型参数和多个JSON类型参数传递给Asp.Net。
在Asp.Net中,我需要弄清楚参数是单个数据还是多个数据来更新DB(EF,Repository模式)。
[单]
[多]
首先,我试过这样,
[HttpPost]
public ActionResult ItemUpdate(WEBORDERLN ln ,IList<WEBORDERLN> lns)
{
但它始终存在。它永远不会去lns :(
[HttpPost]
public ActionResult ItemUpdate(WEBORDERLN ln)
{
// it works for only single update
和
[HttpPost]
public ActionResult ItemUpdate(IList<WEBORDERLN> lns)
{
// it works for only multiple update
我怎么知道,JSON类型参数是单个还是多个?
任何人都知道,请告诉我。
谢谢!
[编辑]
[HttpPost]
public ActionResult ItemUpdate(WEBORDERLNS lns)
{
try
{
EFWebOrderLnRepository webOrderLn = new EFWebOrderLnRepository();
log.Debug("Count : "+lns.lns.Count.ToString()); // Object reference not set to an instance of an object.
log.Debug(lns.lns.Count()); //null, error : Value cannot be null
log.Debug(lns.lns.Count().ToString()); //null, error : Value cannot be null
foreach (WEBORDERLN ln in lns.lns)
{
webOrderLn.updateWebOrderLn(ln); // Error : Object reference not set to an instance of an object
}
.
.
.
public class WEBORDERLNS
{
public IList<WEBORDERLN> lns { get; set; }
}
[编辑]
Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Encoding gzip, deflate
Accept-Language en-us,en;q=0.5
Connection keep-alive
Content-Length 875
Content-Type application/json; charset=UTF-8
Cookie user=38C6C07684B04645821CA5273EAB5B34340CE8CCA13A7D67DC748819B02C6963E4AD2A322068FC3090D3FE03EC81E663A5DED6FF2534E2595B40CF57EFF9BB544FFAC95CD79020E8A94019A3DC53B769EFC4049B6B9627E98AD9DBC1431BB5D99A47625B3353FA697A1CC005855C0248E95F61F7BD4A5362D75E5D01B395FB14E078524B8D0C7219AF959F9AED188AB30A16187DE166D5BD008B0013A65D470C52C9408C47FD42672B8FBABDB3524F77
Host localhost:49995
Referer http://localhost:49995/
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1
X-Requested-With XMLHttpRequest
[编辑]
答案 0 :(得分:1)
创建一个表示订单集的Model类实际上要好得多,其中WEBORDERLN的集合作为属性公开。
public class OrderSet
{
public List<WEBORDERLN> OrderLines { get; set; }
}
在控制器方法上,将传入参数更改为: -
[HttpPost]
public ActionResult ItemUpdate(OrderSet orders)
{
// it works for only multiple update
此时,在接收模型时,您只需调用OrderLines
属性上的计数机制。
// How many orders?
var orderCount = orders.OrderLines.Count;