2016-08-14 74 views
2

这里是一个预计BookingDetailBookingVenue对象我的WebAPI POST方法:如何将两个对象传递给web api?

[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的价值和制作后通过这2个对象:

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的代码,都

+0

您不能将两个对象传递给web api。你可以这样做:'public JsonResult CheckBooking([frombody] dynamic value)' –

+0

@Div:我们可以在web api中传递两个对象。 –

+0

@ismail baig [看这里](http://stackoverflow.com/questions/14407458/webapi-multiple-put-post-parameters) –

回答

1

你n个对象为空只需通过在对象上调用JSON.stringify来发送到serialize即将发送给服务器的JSON对象。

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

只能通过一个对象在身体所以我建议你创建一个新的DTO“BookingDto”为含有BookingDetailBookingVenue为成员和你的WebAPI的签名更改为这:

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

至于亲爱的Pankaj提到你需要在JavaScript Stringify功能Serialize你的数据对象,也可以考虑,你必须提到这HTTP重定向任务包含Application/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;