2010-04-13 81 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绑定规则。只需测试它