最近一直在看PetShop4.0,因为之前一直使用net1.1开发,本想转到2.0开发,怎奈公司的服务器是2000,想升级的话一大堆麻烦着等我。而且也不一定升级后就好,老的服务器,还有其他的因素使得我放弃了转到2.0了。

等待了很久,还是忍不住要学下去,不然就被技术给淘汰了,现在都出到3.5了还来学2.0。没办法,我的想法是跟主流不跟最先进的。现在开始我的学习了,可能会出现很多很多的错误想法及做法,但我想总好过没想法及做法。

打开PetShop发现总共有22个项目啊,感觉好多,很了一下其他人的解读,但感觉还是很多不理解,还是自己慢慢斟酌。

从哪开始看起好呢??麻烦的东西,太多项目看起来可能会有些乱.没办法,一般一个网站过来我都是从首页看起,那就开始吧,从开始看起。Web\Default.aspx ,感觉使用习惯了VS2003然后来使用2005有些不习惯了,怎么一打开来都是代码,点击后设计,发现中间有个Categories控件的东西,再看看源代码,原来是

 <PetShopControl:NavigationControl ID="Categories" runat="server"></PetShopControl:NavigationControl> 

最上面还有个<%@ Register Src="Controls/NavigationControl.ascx" TagName="NavigationControl" TagPrefix="PetShopControl" %>
原来是用户控件 ,打开Controls/NavigationControl.ascx

这个页面只用了Repeater控件,这个控件绑定的内容是

td class="<%= ControlStyle %>"><asp:HyperLink runat="server" ID="lnkCategory"  NavigateUrl='<%# string.Format("~/Products.aspx?page=0&categoryId={0}", Eval("Id")) %>' Text='<%# Eval("Name") %>' /><asp:HiddenField runat="server" ID="hidCategoryId" Value='<%# Eval("Id") %>' /></td> 

再看看他的源代码

using System;
using System.Web.UI.WebControls;
using PetShop.BLL;
using PetShop.CacheDependencyFactory; namespace PetShop.Web { public partial class NavigationControl : System.Web.UI.UserControl { private string controlStyle; // control layout property protected string ControlStyle { get { return controlStyle; } } // Get properties based on control consumer protected void GetControlStyle() { if (Request.ServerVariables["SCRIPT_NAME"].ToLower().IndexOf("default.aspx") > 0) controlStyle = "navigationLinks"; else controlStyle = "mainNavigation"; } protected void Page_Load(object sender, EventArgs e) { GetControlStyle(); BindCategories(); // Select current category string categoryId = Request.QueryString["categoryId"]; if (!string.IsNullOrEmpty(categoryId)) SelectCategory(categoryId); // Add cache dependency this.CachePolicy.Dependency = DependencyFacade.GetCategoryDependency(); } // Select current category. private void SelectCategory(string categoryId) { foreach (RepeaterItem item in repCategories.Items) { HiddenField hidCategoryId = (HiddenField)item.FindControl("hidCategoryId"); if(hidCategoryId.Value.ToLower() == categoryId.ToLower()) { HyperLink lnkCategory = (HyperLink)item.FindControl("lnkCategory"); lnkCategory.ForeColor = System.Drawing.Color.FromArgb(199, 116, 3); break; } } } // Bind categories private void BindCategories() { Category category = new Category(); repCategories.DataSource = category.GetCategories(); repCategories.DataBind();             } }
}

根据源代码再来分析一下

using PetShop.BLL     using PetShop.CacheDependencyFactory     使用了PetShop.BLL及CacheDependencyFactory这两个类

开始从Page_Load开始

使用GetControlStyle()主要是获取样式,BindCategories()将读取的数据绑定到Repeater这个控件上,到底怎么绑定,看源代码

 // Bind categories private void BindCategories() { Category category = new Category(); repCategories.DataSource = category.GetCategories(); repCategories.DataBind();             }

实例化一个category ,然后使用category的GetCategories方法读取得到的数据进行绑定到Repeater这个控件上.

// Select current category string categoryId = Request.QueryString["categoryId"]; if (!string.IsNullOrEmpty(categoryId)) SelectCategory(categoryId);

上面的代码主要是样式的变化,但我感觉如果在真正的项目里这样做不太好,因为他是跟住Repeater的所在项目,也就是排在第几行的数字跟一个隐藏HiddenField绑定的数据ID进行比较,若ID值变化太大的话那不就对不上了!

/ Add cache dependencythis.CachePolicy.Dependency = DependencyFacade.GetCategoryDependency(); 

这一句不太明白,要慢慢研究,E文好像是写着添加红缓存的依赖项

这个到时研究到DependencyFacade会来说明这个是干什么用的。

返回default.aspx他的defalut.aspx.cs文件中

namespace PetShop.Web {public partial class Default : System.Web.UI.Page { /// <summary>/// Redirect to Search page/// </summary>protected void btnSearch_Click(object sender, EventArgs e) {WebUtility.SearchRedirect(txtSearch.Text);}}
}

代码只有这么一点

public partial class Default  在1.1中好像没有partial这个修饰符啊,看网上有的人解释

“还记得.net1.1时,在aspx文件中,是有大片的WEB设计器生成的代码的。到了.net2.0时,asp.net的aspx文件就干净多了,partial起了重要的作用,在这里partial主要是用来隐藏设计器代码的”

btnSearch_Click这个方法是点击搜索后的一个方法,怎么没有按钮的触发器写法了?

再看看WebUtility这个类

定义了几个静态方法

InputText()过滤恶意代码的方法,不过感觉不够全面

CleanNonWord()去除文字,剩下数字

SearchRedirect()搜索跳转

GetCategoryName() 根据categoryId分类项目的ID读取分类项目的名称

GetProductName() 根据productId产品ID读取产品的名称

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/clongge/archive/2008/08/05/2771286.aspx

转载于:https://www.cnblogs.com/cxccbv/archive/2009/07/10/1520768.html

petshop学习笔记(1)相关推荐

  1. 宠物商店(pet-shop) 学习笔记

    宠物商店(pet-shop) 学习笔记 truffle 可以算是一个超级强大的 Ethereum 开发工具集, 集各种的功能集一身, 今天, 照着官方的文档, 和 手把手的教程, 完成了其中提供的一个 ...

  2. petshop学习笔记(4)

    回到Products.aspx的代码分析,前面我的2章都分析了products.aspx这个例子里包括的三层架构学习及工厂模式的原理,接下来就是要学学NET2.0的缓存技术. 上章还留下了最后一点没有 ...

  3. JavaSE学习笔记(持续更新)

    这里写目录标题 JavaSE学习笔记(持续更新) Java跨平台原理与核心机制 1.跨平台原理: 2.两种核心机制: JDK11的安装流程 Java程序开发的三个步骤(无编辑器版) Eclipse安装 ...

  4. DDK学习笔记(转)

    下面这是kruglinski关于学习驱动编写的文章.虽然是入门级文章,但是也需要对驱动有一些了解后才可以看的比较透彻. <DDK学习笔记>1---入门 1.驱动程序的结构: 1.1.一个入 ...

  5. 最热网友收藏:写得蛮好的linux学习笔记(2007年第10周)

    2007年第10周最热网友收藏 上班人员必读:"五险一金"详解!(130),共376人收藏,liukang520236首先收藏 写得蛮好的linux学习笔记-(96),共159人收 ...

  6. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  7. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  8. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  9. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

最新文章

  1. Python培训教程分享:Python模块如何导入__all__属性?
  2. 独家 | 综述:情感树库上语义组合的递归深层模型
  3. oracle的那些事
  4. Openlayers中加载Geoserver切割的EPSG:900913离线瓦片地图并显示
  5. byte数组转字符串_leetcode刷题844比较含退格的字符串(带代码解析,带知识点回顾)...
  6. 浅读《视觉SLAM十四讲:从理论到实践》--操作1--初识SLAM
  7. java hashmap 输出_JAVA如何把HashMap内容输出到文本文件
  8. python在匿名函数作和_python之路——内置函数和匿名函数
  9. Vivado设计流程(三)功能仿真
  10. LINUX基本指令、NGINX负载均衡基本操作与解释
  11. 要读顶级会议上的论文
  12. 汇编程序:成绩分段统计
  13. c++ 关于指针以及(amp;)使用的一些小问题
  14. IOS开发之——数据库-Couchbase(05)
  15. roslyn c#脚本_使用ScriptCS和Roslyn的无项目脚本C#
  16. Java中类与对象编程题
  17. B-spline Surfaces
  18. CSGO DIY-小地图修改
  19. MFC CFile 读写文件
  20. Istio的流量镜像

热门文章

  1. 我的docker随笔9:docker在centos上的安装
  2. contes 7.6安装后网络问题解决方案
  3. python oserror路径not found_python基本操作-文件、目录及路径
  4. 【Flink】Flink on yarn 支持指定 application id 吗? yarn.application.id
  5. 【clickhouse】Clickhouse 查询之 Array JOIN
  6. 【Kafka】Kafka SCRAM认证 ERROR [ZooKeeperClient] Auth failed
  7. 工具包:Safetype Config使用
  8. 95-120-042-源码-Cluster-SessionClusterEntrypoint
  9. 95-240-048-原理-State-StateBackend
  10. 【Flink】ProcessFunction:Flink最底层API使用教程