首页 > 代码库 > .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
大体层次如下: