1

単一のJSONタイプのパラメーターと複数のJSONタイプのパラメーターをAsp.Netに渡します。

Asp.Netでは、DB(EF、リポジトリパターン)を更新するために、パラメーターが単一データまたは複数データであることを理解する必要があります。

[独身]

ここに画像の説明を入力してください

[多数]

ここに画像の説明を入力してください

まず、こうやってみました、

[HttpPost]
public ActionResult ItemUpdate(WEBORDERLN ln ,IList<WEBORDERLN> lns)
{

しかし、それは常にlnになります。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

[編集]

ここに画像の説明を入力してください

4

1 に答える 1

1

実際には、WEBORDERLNのコレクションをプロパティとして公開して、注文セットを表すModelクラスを作成する方がはるかに優れています。

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;
于 2012-07-19T13:13:55.960 に答える