.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
大体层次如下:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。