2010-04-13 36 views
0

似乎無法找到一個解決此問題

我對的onclick事件一個 HTML標籤的下面的代碼:

AddVacationToCart( 
{ 
ServiceSupplier:'Kiki', 
ProductId:'0;11968;0;0;187;1', 
Name:'Excelsior', 
NumberOfStars:'*****', 
TotalPrice:'1620.00', 
PriceLevelName:'Standard', 
Currency:'EUR', 
Status:'', 
StartDate:'2010-06-17', 
EndDate:'2010-06-24', 
NumberOfNights:'7', 
Rooms:[ 
{ 
NumberOfAdults:'2', 
NumberOfChildren:'0', 
ChildrenAges:[] 
} 
] 
},'0;11968;0;0;187;1');return false; 

我也有這樣的代碼:

function AddVacationToCart(vacation, id) { 
      $.post("/ShoppingCart.mvc/AddVacation", 
     vacation, 
     function(data) { 
      var div = $("div[id*=cartv" + id + "]"); 
      var removeFromCartHtml = "Adaugat"; 
      $(div).html(removeFromCartHtml); 
     }, "json"); 
     } 

這是我ShoppingCartController AddVacation行動代碼:

[AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult AddVacation(Vacation test) 
     { 
... 
} 

的崗位工作作爲(度假)測試對象被裝滿像ServiceSupplier,產品編號,名稱等相應的屬性除了我的房間域的屬性沒有得到相應的值。 任何ideeas?

+0

好的。使用JSON.Net解決了這個問題。我使用JsonConvert序列化了我的對象,然後使用$ .ajax將其作爲字符串傳遞給AddVacation操作。在控制器中,我使用JsonConvert重新實現了對象。有點像Scotty在客隊頭上或下來:)。 – drupop 2010-04-13 14:15:17

回答

0

我發現從1.4開始,JQuery的ajax函數就像是地獄一樣。我的腳本在每個平臺的每個瀏覽器上都能正常工作,除了Linux上的Chrome瀏覽器。我爲此提交了錯誤報告,至今未收到任何回覆。

0

房間是一個數組,因此您必須命名道具linke Rooms [0] .NumberOfAdults,Rooms [1] .NumberOfAdults以使默認模型綁定器按預期工作。

0

您的代碼應該是這樣的:

AddVacationToCart( 
{ 
    ServiceSupplier:'Kiki', 
    ProductId:'0;11968;0;0;187;1', 
    Name:'Excelsior', 
    NumberOfStars:'*****', 
    TotalPrice:'1620.00', 
    PriceLevelName:'Standard', 
    Currency:'EUR', 
    Status:'', 
    StartDate:'2010-06-17', 
    EndDate:'2010-06-24', 
    NumberOfNights:'7', 
    'Rooms[0].NumberOfAdults' :'2', 
    'Rooms[0].NumberOfChildren':'0', 
    'Rooms[0].ChildrenAges[0]': '18' 

},'0;11968;0;0;187;1');return false; 

因爲ASP.NET MVC綁定規則。只需測試它