表现层笔记之页面是如何调用

本文通过PetShop项目的示例代码,详细解析了MVC模型的应用方式。具体包括页面控件如何与业务逻辑交互、如何通过实体类操作数据库等过程。

很久以前就疑惑这段代码是怎么回事(下面还是拿petshop的product.aspx.cs为例吧):

publicpartialclass Products : System.Web.UI.Page {

protectedvoid Page_Load(object sender, EventArgs e) {
//get page header and title
Page.Title = WebUtility.GetCategoryName(Request.QueryString["categoryId"]);
}
}

这样这里类Products继承了System.Web.UI.Page这个类,二page类通过继承System.Web.UI.Control类,从而拥有了web控件的特性,它同时继承了IHttpHandler这个接口,作为处理Http Web请求的接口。page就是通过Control类继承了Load。张逸老师将了MVC模型在petshop表现层中,但是我对这个模型不太理解。还是先引用下张老师书最经典的例子:

protectedvoid wzdCheckOut_FinishButtonClick(object sender, WizardNavigationEventArgs e) {
if (Profile.ShoppingCart.CartItems.Count >0) {//说明有宠物下单了
if (Profile.ShoppingCart.Count >0) {//我觉得这个多余吧

// display ordered items
//应该是显示清单吧 调用CartList.ascx.cs中的Bind函数
CartListOrdered.Bind(Profile.ShoppingCart.CartItems);

// display total and credit card information
ltlTotalComplete.Text = ltlTotal.Text;
ltlCreditCardComplete.Text
= ltlCreditCard.Text;

// create order
OrderInfo order =new OrderInfo(int.MinValue, DateTime.Now, User.Identity.Name, GetCreditCardInfo(), billingForm.Address, shippingForm.Address, Profile.ShoppingCart.Total, Profile.ShoppingCart.GetOrderLineItems(), null);

// 调用BLL.Order
Order newOrder =new Order();
newOrder.Insert(order);

// destroy cart
Profile.ShoppingCart.Clear();
Profile.Save();
}
}
else {
lblMsg.Text
="<p><br>Can not process the order. Your cart is empty.</p><p class=SignUpLabel><a class=linkNewUser href=Default.aspx>Continue shopping</a></p>";
wzdCheckOut.Visible
=false;
}
}

这个事件是Wizard控件的事件,在执行完所有的Wizard步骤后触发。那么这个MVC是怎么样理解的呢?首先从页面控件得到属性,调用OrderInfo订单实体类。然后,调用BLL.Insert方法吧这个OrderInfo实体,插入到数据库。解释:实体类的即是---View、Order对象(上面这段代码调用了Order对像的Insert方法)即是Model、而这个控件FinishButtonClick事件应该就是Controler吧。这个例子为什么典型呢?因为View即影响了Model 的值,而Model的值又反过来影响了View。具体是这样的:View的属性传递给OrderInfo对象,然后调用Order的Insert数据库。而我们上面也调用Profile.ShoppingCart.CartItems.Count 的数量进行了判断,如果它的值是0,那么会在页面进行提示消息。

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/huaizuo/archive/2011/07/19/2110839.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值