2016-08-14 77 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;