簡體   English   中英

將列表傳遞給控制器​​Asp.Net MVC Json

[英]Passing Lists to Controller Asp.Net MVC Json

我在將列表數據從JS傳遞到Controller時遇到問題,因為列表是字符串化的,ajax沒有提交給Controller。 我應該對javascript和控制器方法進行哪些更改。 任何幫助,都可以實現。

Java腳本

 $('#submit').click(function () {
    var isAllValid = true;
    var list = [];

        var orderItem = {

            Agency: $('.AgentName', this).val(),
            SectorPair: $('select.sectorCategory', this).val().trim(),
            ForPAX: $('.foreignPax', this).val(),
            IndPAX: $('.indianPax', this).val(),
            FlightDate: $('.flightDate', this).val(),
            Airlines: $('select.airlineCategory', this).val().trim()
        }
        list.push(orderItem);
        //}
    })

        $.ajax({
            type: 'POST',
            url: '/DomesticDeparture/Create',
            data: JSON.stringify(list),
            contentType: 'application/json',
            success: function (data) {
                if (data.status) {
                    alert('Successfully saved');
                    //here we will clear the form
                    list = [];
                    $('#airlineName,#departureDate').val('');
                    $('#orderdetailsItems').empty();
                    $('#AgentName').focus();
                }
                else {
                    alert('Error');
                }
                $('#submit').text('Save');
            },
            error: function (error) {
                console.log(error);
                $('#submit').text('Save');
            }
        });
    }

});

控制器

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create( List<DomesticDepartureEntry> dentries)
{
    if (ModelState.IsValid)
    {
       foreach (var a in dentries)
            {
                db.DomesticDepartureEntries.AddRange(dentries);
                db.SaveChanges();
            }
    }

    return View();
}

制作如下所示的API控制器:

using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

public class ValuesController : ApiController
{
        [HttpPost]
        [Route("api/CreateRecord")]
        public async Task<HttpResponseMessage> CreateRecord([FromBody] List<DomesticDepartureEntry> dentries)
        {
            try
            {
               if (ModelState.IsValid)
               {
                  db.DomesticDepartureEntries.AddRange(dentries);
                  db.SaveChanges();
                  return new HttpResponseMessage()
                {
                    Content = new ObjectContent<JObject>(new JObject { new JProperty("message", "Record successfully inserted into the database!") }, new JsonMediaTypeFormatter()),
                    StatusCode = HttpStatusCode.OK
                };

               }
            }
            catch(Exception ex)
            {
               return new HttpResponseMessage()
                {
                    Content = new ObjectContent<JObject>(new JObject { new JProperty("message", $"Failed because: {ex.Message}") }, new JsonMediaTypeFormatter()),
                    StatusCode = HttpStatusCode.ExpectationFailed
                };
            }
        }
}

您不向AJAX成功回調返回視圖,而是向回調返回JSON對象以及狀態碼。

並修改您的AJAX調用以將其路由到以下Web API:

$.ajax({
        method: 'POST',
        url: 'api/CreateRecord',
        data: JSON.stringify(list),
        dataType: 'json',
        contentType: 'application/json; charset=utf-8',
        success: function (data)
        {
              if(!$.isEmptyObject(data)){
                console.log( data["message"] );
                alert( data["message"]);

                //Your business logic
                //here we will clear the form
                list = [];
                $('#airlineName,#departureDate').val('');
                $('#orderdetailsItems').empty();
                $('#AgentName').focus();
             }
            else
                 alert('Some error occured!');
        },
        error: function ( jqXHR, errorThrown, statusText )
        {
                console.log( errorThrown );
                alert(errorThrown);
        }
    });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM