Pracuję nad koszykiem e-commerce. Mam dwa modele widoku.Przekaż dwie wizjery do działania
Pierwszy Informacje o klientow:
public class CartViewModel
{
public string FirstName{get;set;}
public string Email{get;set;}
//... other fields
}
A po drugie dla klientów koszyk:
public class ProductsCart
{
public Guid Id { get; set; }
public decimal Price { get; set; }
public int ItemsOrdered { get; set; }
}
Najważniejszą rzeczą jest to, że koszyk przechowywania użytkownicy localStorage i powinien przekazać go od localStorage z informacją klientów poprzez jquery do działania MVC:
[HttpPost]
public ActionResult ConfirmOrder(CartViewModel model, IEnumerable<ProductsCart> cart)
{
// validate and save to database
}
Mam metodę javascript do se nd dane do mojego działania:
function ConfirmOrder() {
var serverCart = LocalCartToSercerCart(); //see first screnshot
var customerData = $("#FORM_WITH_CUSTOMERS_VIEW_MODEL").serialize();
$.ajax({
method: "POST",
url: "/Cart/ConfirmOrder",
data: {model: customerData, cart: serverCart }
})
.done(function() {
//do something
});
}
Ale zawsze się wartość zerową dla mojego CartViewModel (screenshot 2)
Ja również dołączone pliki z mojego informacji debugowania.
Jeśli piszę funkcji javascript takiego:
function ConfirmOrder() {
var customerData = $("#cartForm").serialize();
$.ajax({
method: "POST",
url: "/Cart/ConfirmOrder",
data: customerData
})
.done(function() {
//some code
});
}
otrzymuję tylko dane modelowe (patrz ilustracja 3)
EDIT: pisałem kod za pomocą Igor`s odpowiedź, ale wciąż się wartość null w parametrze działania
lub mógłby wykorzystać [krotki] (https://nitinasp.wordpress.com/2014/02/03/tuples-in-mvc/) – Manoj
I wypróbowany tak, jak napisałeś, ale wciąż null (tutaj ekran mojej pracy) https://drive.google.com/open?id=0B-dajRUS_6ynQUFLakQ3RTJ5NFU – dantey89
@ dantey89 - nie jestem pewien, co wysyłasz, ale generalnie nie śledzę linków zewnętrznych (bezpieczne przeglądanie i wszystkie). Jeśli masz dodatkowe pytania lub aktualizację, zaktualizuj swoje pytanie tymi szczegółami, z przyjemnością odpowiem w ten sposób. Jeśli jest to tylko pytanie, możesz również zamieścić to w komentarzu (to samo miejsce, w którym właśnie opublikowałeś ten link). – Igor