Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何将两个对象传递给web api?_Asp.net_Angularjs_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

Asp.net 如何将两个对象传递给web api?

Asp.net 如何将两个对象传递给web api?,asp.net,angularjs,asp.net-mvc,asp.net-web-api,Asp.net,Angularjs,Asp.net Mvc,Asp.net Web Api,以下是我的WebAPI POST方法,它需要BookingDetail和bookingVisite对象: [HttpPost] [ValidateUserSession] public JsonResult CheckBooking(BookingDetail BookingDetail, BookingVenue objBV) { try { if (BookingDetail != null &&

以下是我的WebAPI POST方法,它需要
BookingDetail
bookingVisite
对象:

    [HttpPost]
    [ValidateUserSession]
    public JsonResult CheckBooking(BookingDetail BookingDetail, BookingVenue objBV)
    {
        try
        {
            if (BookingDetail != null && objBV != null)
            {
                bool result = Ibook.checkBookingAvailability(BookingDetail, objBV);
                if (result == false)
                {
                    return Json("NotAvailable");
                }
                else
                {
                    return Json("Available");
                }
            }
            else
            {
                return Json("Available");
            }
        }
}

角度代码,我从UI中获取值,并发布传递这两个对象的帖子:

this.checkbookingavailability = function (Book) {
    var BookingVenueObj = {
        EventTypeID: Book.EventSelected,
        VenueID: Book.Venueselected,
        GuestCount: Book.NoofGuest,            
    };
    var BookingDetailObj = {
        BookingDate: Book.BookingDate
    };
    var response =
       $http({
           method: "POST",
           url: "/Booking/CheckBooking/",
           headers: {
               'RequestVerificationToken': $cookies.get('EventChannel')
           },
           data: { BookingDetail: BookingDetailObj, BookingVenue: BookingVenueObj }

       });
    return response;

}

问题是在我的WebAPI代码中,两个对象都为null,您需要通过调用
JSON.stringify
over object将要发送到服务器的
JSON对象序列化

var response =
   $http({
       method: "POST",
       url: "/Booking/CheckBooking/",
       headers: {
           'RequestVerificationToken': $cookies.get('EventChannel')
       },
       data: JSON.stringify({ 
         BookingDetail: BookingDetailObj, 
         BookingVenue: BookingVenueObj
       })
   });
return response;
您只能在主体中传递一个对象,因此我建议您为包含
BookingDetail
bookingvention
的对象创建一个新的DTO“BookingDto”,并将WebAPI的签名更改为:

[HttpPost]
[ValidateUserSession]
public JsonResult CheckBooking([FromBody]BookingDto bookingObj)

亲爱的Pankaj提到,你需要在JavaScript中<代码>序列化< /代码>你的数据对象用<代码> StrugTime/Cuff>函数,还必须考虑到这个HTTP请求包含<代码>应用程序/JSON<代码>内容。所有这些都可以在这里显示:

var response =
   $http({
       method: "POST",
       url: "/Booking/CheckBooking/",
       headers: {
           'RequestVerificationToken': $cookies.get('EventChannel'),
           'Content-Type' : 'application/json'
       },
       data: JSON.stringify({ 
         BookingDetail: BookingDetailObj, 
         BookingVenue: BookingVenueObj
       })
   });
return response;

不能将两个对象传递给web api。您可以这样做
public JsonResult CheckBooking([frombody]动态值)
@Div:我们可以在web api中传递两个对象。@ismail baig@Div:链接似乎是从url传递一些数据和从body传递另一些数据的问题,这显然是不正确的方法。但这里的问题是从body(典型的POST)传递对象,您也可以使用JObject来实现这一点-