I have the following problem,
I’m creating functionality for ordering products for internet shop.
Everything works fine, user can add products to cart. This is how user can complete order:
user goes to cart (cartview) ,
user must provide shipping details (shippingDetailsView) ,
summary page is displayed (summaryView) ,
sending order to server ,
displaying thank you page,
however when user click “proceed” button in summaryView (which is strongly typed by OrderViewModel class) then CompleteOrder action is executed that gets the following parameters:
public ViewResult CompleteOrder(ShoppingCart shoppingCart, OrderViewModel orderViewModel, string returnUrl)
OrderViewModel class looks as follows
public class OrderViewModel
{
public Order Order { get; set; }
public string ReturnUrl { get; set; }
}
the problem is that Order object inside my orderViewModel object is null. I created some hiddenfields in my summaryView so the Order will be passed appropraite:
<%: Html.HiddenFor(x => x.Order.Client.Firstname)%>
However I don’t think this is a good solution. How can I do it appropriate?
Since CompleteOrder already has the ReturnUrl parameter, why not simplify your model and just pass the Order itself: