分享
 
 
 

学习PetShop3.0(5)生成定单

王朝asp·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

点proceed to checkout后,就进入Checkout.aspx,确认后进入OrderBilling.aspx,在这里可以修改你的信息,完成后点continue,会出现个人信息的只读页面,最终确认后就进入OrderProcess.aspx,在这里是定单的详细情况,并且是只读的,到这里,定单被添加到数据库,购物完成。

Checkout.aspx把数据从Session中取出来,然后显示到页面,没什么好说的。

OrderBilling.aspx,这个页面一开始显示的信息可写,我们看OnLoad事件中,是用ProcessFlow.AccountController.GetAccountInfo获得用户的信息CreditCardInfo,然后显示在一些可写的控件中,比如用户控件:StaticAddress。当点击确认后,使用StoreCreditCard把刚才获得的用户信息保存到Sessin,准备呆会用。

OrderProcess.aspx是最终的定单生成页面。主要就是一个方法:

ProcessFlow.CartController.PurchaseCart 来看它的实现

public OrderInfo PurchaseCart(){

// Fetch the cart from session

Cart myCart = (Cart)HttpContext.Current.Session[CART_KEY];

// Make some checks on the cart

if ( ( myCart == null ) || ( myCart.Count==0 ) ) {

HttpContext.Current.Server.Transfer(URL_NOCART);

//HttpContext.Current.Response.Redirect(URL_NOCART, false);

return null;

}else{

// Build up the order

OrderInfo newOrder = new OrderInfo();

newOrder.UserId = ((AccountInfo)HttpContext.Current.Session[ACCOUNT_KEY]).UserId;

newOrder.CreditCard = (CreditCardInfo)HttpContext.Current.Session[CREDITCARD_KEY];

newOrder.BillingAddress = (AddressInfo)HttpContext.Current.Session[BILLING_KEY];

newOrder.ShippingAddress = (AddressInfo)HttpContext.Current.Session[SHIPPING_KEY];

newOrder.LineItems = (LineItemInfo[])myCart.GetOrderLineItems().ToArray(typeof(LineItemInfo));

newOrder.OrderTotal = myCart.Total;

newOrder.Date = DateTime.Now;

// Send the order to the middle tier

OrderInsert order = new OrderInsert();

//向数据库插入数据

newOrder.OrderId = order.Insert(newOrder);

// clear the session objects used

HttpContext.Current.Session[CART_KEY] = null;

HttpContext.Current.Session[CREDITCARD_KEY] = null;

HttpContext.Current.Session[BILLING_KEY] = null;

HttpContext.Current.Session[SHIPPING_KEY] = null;

return newOrder;

}

}

Order主要是由保存在Session里的值形成,其中包括购物车。

在Order有一个LineItemInfo,它是由Cart.GetOrderLineItems方法依据cart里CartItemInfo的值返回的,是定单的物品部分,和CartItemInfo相比,主要是多了一个Line属性,这个Line是用来表示物品在定单内的序号。

下面是Insert的实现。

public int Insert(OrderInfo order) {

// Get an instance of the Order DAL using the DALFactory

IOrder dal = PetShop.DALFactory.Order.Create();

// Call the insert method in the DAL to insert the header

int orderId = dal.Insert(order);

// Get an instance of the Inventory business component

Inventory inventory = new Inventory();

//向数据库插入库存信息

inventory.TakeStock( order.LineItems);

// As part of the sample application we have created a user

// you can tested distributed transactions with

// If the order has been created with the user 'Acid',

// then throw an exception which will rollback the entire transaction

if (order.UserId == ACID_USER_ID)

throw new ApplicationException(ACID_ERROR_MSG);

// Set the orderId so that it can be returned to the caller

return orderId;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有