首页 > 代码库 > .NET PetShop 4.0 (一)

.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="http://www.mamicode.com/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=http://www.mamicode.com/"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