.NET PetShop 4.0 (一)

首先,进入 Default.aspx 页面

  过程:输入关键字,点击搜索,跳转至 Search 页面并呈现结果

  

  打开 Default.aspx ,可以看到 btnSearch 点击事件为 btnSearch_Click , 打开 Default.aspx.cs 找到响应方法

  可以看到是使用了 WebUntity 静态类的 SearchRedirect 静态方法:

    private const string REDIRECT_URL = "~/Search.aspx?keywords={0}";

    HttpContext.Current.Response.Redirect(string.Format(REDIRECT_URL, InputText(key, 255)));

  打开 Search.aspx

    <%@ Register Src="Controls/SearchControl.ascx" TagName="SearchControl" TagPrefix="uc1" %>

  虽然不知道什么意思,但可以看出它调用了 SearchControl.ascx ,那么打开 SearchControl.ascx

    <%= Request.QueryString["keywords"] %> 结合页面显示,可知是获取请求的字符串

    <%# Eval("Name") %> 这个一会就知道啦 ^_^

  接着,打开 SearchControl.ascx.cs 有两个方法,先看下 Load 方法(就是加载啦),发现。。。咳咳咳,还是看 PageChanged 吧

      string keywordKey = Request.QueryString["keywords"];  1.获取关键字

Product product = new Product();

      searchList.DataSource = product.GetProductsBySearch(keywordKey);   2.使用 Product 对象的 GetProductsBySearch 方法获得数据

searchList.DataBind();  3.绑定数据

  那么,找到 Product 类的 GetProductsBySearch 方法

    private static readonly IProduct dal = PetShop.DALFactory.DataAccess.CreateProduct();

    dal.GetProductsBySearch(keywords);

  so, 找到 CreateProduct 方法

    

private static readonly string path = ConfigurationManager.AppSetting["WebDAL"];
string className = path + ".Product";
return (PetShop.IDAL.IProduct)Assembly.Load(path).CreateInstance(className);
<appSettings>
    <add key="WebDAL" value="PetShop.SQLServerDAL"/>
</appSettings>

  ∴ className = "PetShop.SQLServerDAL.Product"

  ∵ return后面那个是动态加载程序集并创建所给类型的实例

  ∴ 返回了一个 Product 对象

  进入 PetShop.SQLServerDAL.Product 找到 GetProductsBySearch

   前面的暂时不需要细看,拉到最后

  

1 using (SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnectionStringLocalTransaction, CommandType.Text, sqlProductsBySearch, parms)) {
2         while (rdr.Read()) {
3              ProductInfo product = new ProductInfo(rdr.GetString(0), rdr.GetString(1), rdr.GetString(2), rdr.GetString(3), rdr.GetString(4));
4              productsBySearch.Add(product);
5         }
6 }
7 return productsBySearch;

可以看到它调用了 SQLHelper的 ExecuteReader(ConnectionString, CommandType, sqlStr,params [] SqlParameter[] commandParameters) 辅助方法
then , it‘s over

大体层次如下:

 

Default.aspx -> Search.aspx -> SearchControl.ascx

PetShop.BLL.Product

PetShop.SQLServerDAL.Product -> PetShop.DBUntity.SQLHelper

PetShop.Model.ProductInfo

.NET PetShop 4.0 (一),布布扣,bubuko.com

时间: 2024-12-19 09:31:15

.NET PetShop 4.0 (一)的相关文章

PetShop 4.0学习笔记:消息队列MSMQ

直到今天才知道,在我们每天都在用的Window系统里还有这么好用的一个编程组件:消息队列.它能够解决在大数据量交换的情况下的性能问题,特别是BS系统的数据库性能.而且它的异步处理方式能给程序员最大的便利与最好的用户体验. 1.首先在需要进行消息队列的服务器上安装MSMQ,我的系统是win2003+iis6,所以这个安装选项在添加删除程序->windows组件->应用程序服务器内.默认是不安装的,需要手动选择. 2.建立消息队列的存放路径.这可以在windows的计算机管理内添加,也可以在程序中

petshop4.0 具体解释之中的一个(系统架构设计)

前言:PetShop是一个范例,微软用它来展示.Net企业系统开发的能力.业界有很多.Net与J2EE之争,很多数据是从微软的PetShop和Sun的PetStore而来.这样的争论不可避免带有浓厚的商业色彩,对于我们开发者而言,没有必要过多关注.然而PetShop随着版本号的不断更新,至如今基于.Net 2.0的PetShop4.0为止,整个设计逐渐变得成熟而优雅,却又非常多能够借鉴之处.PetShop是一个小型的项目,系统架构与代码都比較简单,却也凸现了很多颇有价值的设计与开发理念.本系列试

Microsoft PetShop 集锦

一.pet shop 2.0 项目概述与架构分析微软刚推出了基于ASP.NET 2.0下的Pet Shop 4, 该版本有了一个全新的用户界面.是研究ASP.NET 2.0的好范例啊 PetShop 4.0 Installer.msi 每层详解如下: 序号 项目名称 程序集名称 默认命名空间 描述 1 WEB 表示层 2 Model PetShop.Model PetShop.Model 业务实体 3 BLL PetShop.BLL PetShop.BLL 业务逻辑层 4 DALFactory

Microsoft .NET Pet Shop 4: Migrating an ASP.NET 1.1 Application to 2.0

249 out of 297 rated this helpful - Rate this topic Gregory LeakeMicrosoft Corporation Alan Le, Alex Arkhipov, Mike Hanley, and Steve NyholmVertigo Software, Inc. February 2006 Applies to:    Microsoft .NET Framework 2.0     Microsoft Visual Studio 2

Access中的SELECT @@IDENTITY

在Access数据库中存在select @@identity吗?答案是肯定的.但是Access一次只能执行一条SQL,多条SQL需要多次执行,这是限制.在SQL Server中,可以一次执行多条SQL语句.Access使用的是Jet-SQL,SQL Server使用的是T-SQL,两者用法上相差很大. 但是Access中可以连续执行N条语句,象下面这样:   cmd.CommandText = "INSERT INTO MyTable (N1,N2) VALUES (22,11)"; 

ASP.NET中进行消息处理(MSMQ) 三

在本文的前两篇文章里对MSMQ的相关知识点进行了介绍,很多阅读过这前两篇文章的朋友都曾问到过这样一些问题:  1.如何把MSMQ应用到实际的项目中去呢?  2.可不可以介绍一个实际的应用实例?  3....... 在前两篇文章里,关于MSMQ常用的技术点基本介绍完毕了,本文主要以MS开源项目PetShop中的MSMQ应用作为案例来介绍MSMQ在实际项目中的应用.在PetShop里,由于系统使用了多线程的专用应用程序来监控消息队列,在进入PetShop应用分析前,我们先来了解下关于多线程和MSMQ

ASP.NET中进行消息处理(MSMQ) 三(转)

在本文的前两篇文章里对MSMQ的相关知识点进行了介绍,很多阅读过这前两篇文章的朋友都曾问到过这样一些问题:  1.如何把MSMQ应用到实际的项目中去呢?  2.可不可以介绍一个实际的应用实例?  3....... 在前两篇文章里,关于MSMQ常用的技术点基本介绍完毕了,本文主要以MS开源项目PetShop中的MSMQ应用作为案例来介绍MSMQ在实际项目中的应用.在PetShop里,由于系统使用了多线程的专用应用程序来监控消息队列,在进入PetShop应用分析前,我们先来了解下关于多线程和MSMQ

C#设计模式之代理模式(三)

15.4 远程代理   远程代理(Remote Proxy)是一种常用的代理模式,它使得客户端程序可以访问在远程主机上的对象,远程主机可能具有更好的计算性能与处理速度,可以快速响应并处理客户端的请求.远程代理可以将网络的细节隐藏起来,使得客户端不必考虑网络的存在.客户端完全可以认为被代理的远程业务对象是在本地而不是在远程,而远程代理对象承担了大部分的网络通信工作,并负责对远程业务方法的调用. 远程代理示意图如图15-5所示,客户端对象不能直接访问远程主机中的业务对象,只能采取间接访问的方式.远程

[转]MySQLHelper类

本文转自:http://de.cel.blog.163.com/blog/static/5145123620110181003903/ 类似于SQLHelper,只是这里引用的是MySql.Data类库,而不是System.Data.SqlClient;因为.Net框架里面并不包 含些类库,好在咱们有强大的网友有做好的MySql.Data类库.在网上一搜MySql.Data就可以找到的.注意一定要先添加对 MySql.Data的引用哦,接下来是MySQLHelper的类库代码. using Sy