惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

H
Help Net Security
博客园 - Franky
GbyAI
GbyAI
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
爱范儿
爱范儿
IT之家
IT之家
酷 壳 – CoolShell
酷 壳 – CoolShell
aimingoo的专栏
aimingoo的专栏
博客园_首页
MongoDB | Blog
MongoDB | Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
Recent Announcements
Recent Announcements
Scott Helme
Scott Helme
有赞技术团队
有赞技术团队
M
MIT News - Artificial intelligence
C
CERT Recently Published Vulnerability Notes
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Jina AI
Jina AI
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
L
LangChain Blog
L
LINUX DO - 最新话题
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
H
Hacker News: Front Page
MyScale Blog
MyScale Blog
P
Palo Alto Networks Blog
G
Google Developers Blog
Google DeepMind News
Google DeepMind News
AI
AI
T
Troy Hunt's Blog
Microsoft Azure Blog
Microsoft Azure Blog
阮一峰的网络日志
阮一峰的网络日志
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Vercel News
Vercel News
Microsoft Security Blog
Microsoft Security Blog
罗磊的独立博客
S
Secure Thoughts
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
人人都是产品经理
人人都是产品经理
Blog — PlanetScale
Blog — PlanetScale
博客园 - 司徒正美
Apple Machine Learning Research
Apple Machine Learning Research
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 三生石上(FineUI控件)
S
Security @ Cisco Blogs
Cloudbric
Cloudbric
E
Exploit-DB.com RSS Feed
Attack and Defense Labs
Attack and Defense Labs

博客园 - 七思软件

基于.Net的架构设计之七 基于.Net架构设计之六 基于.Net的架构设计之五 基于.Net架构设计之四 基于.Net架构设计之三 基于.Net架构设计之二 基于.Net的架构设计之一 Microsoft.Visual.Studio.2005.Team.System 面象asp.net2.0的MasterControls控件 aspx页面中标题单点解决方案 求助,web应用程序中的进程线程控制 (The 'url' property had a malformed URL)求助 - 七思软件 Asp.net 2.0功能体验,细节之Web控件(一) 隐藏控件 Asp.net 2.0功能体验,欢迎光临指导 C#中泛型求助 C#2.0中可空类型 迎接.Net2.0 我只是一只碌碌无为的工蚁 : ( 论Web控件开发 - 完美上传下载控件“新”(五)
Asp.net 2.0功能体验,总体设计思想
七思软件 · 2005-12-03 · via 博客园 - 七思软件

此文为http://keyss.cnblogs.com/archive/2005/12/02/289525.html后续文章

开发示例网站的主要目的如下:
    一、熟悉新的.Net开发环境,理解并掌握Asp.net2.0中新内置的安全认证及实现原理,掌握典型网站开发流程。
    二、针对新的.Net开发环境探索基于多层架构开发的成熟经验。
    三、熟悉System.Web.UI.WebControls命名空间中新的基类,以及新的页面生存期及控件生存期,并移植以前基于.Net1.0中的已有控件。

开发示例网站的总体设计思想:
    一、系统分四层实现
            1.数据库层
            2.数据访问层
            3.业务层
            4.界面层
其中前三层中基类代码主要通过Codesmith模板按需生成,在此附上针对友情链接表生成的代码及说明以供参考:
friendlink.rar  其界面网址为 http://www.keyss.cn/admin/basismodule/home/friendlink.aspx

在生成的代码中,为了迎合.net2.0中某些控件的需要新生成了一些函数:
如为了简单支持ObjectDataSource的增加修改删除功能实现了以下三个函数(请注意传进的参数):
        public virtual int Insert(FriendLinkInf inf);
        public virtual int Update(FriendLinkInf inf);
        public virtual int Delete(FriendLinkInf inf);
而为了支持GridView控件分页及跨页排序实现了以下两个函数:
        public DataTable GetPage(string fieldsName, string whereSql, string orderBy, int startIndex, int maxRecordReturn);
        public int GetRecordNumber(string fieldsName, string whereSql, string orderBy, int startIndex, int maxRecordReturn);
我想这里可能存在一个Net2.0中的一个小bug或者说不便的地方,就是取得所有记录数的函数的参数要和取得分页数据的选择函数的参数要完全一致,而按常理,获取记录数的参数只要有where条件就可以了。

而在界面层则主要利用GridView,FormView及ObjectDataSource实现数据的呈现及编辑。
之所以不用DetailView是因为他的界面样式过于单调,虽然他在数据绑定上有着更好的支持,比如空数据的显示及解析等等。而不用SqlDataSource是因为它过于简单并且有违多层开发的思想,只能用在简单的环境下实现快速开发。

下面是示例网站的一个典型管理页面的设计界面:

可以看到一个典型的页面中我放了两个ObjectDataSource对象,一个用来为gridview提供只读分页数据,而另一个则用来为FormView控件提供可修改的数据。
而为GridView提供数据的ObjectDataSource控件中两个参数是直接引用页面中两个hiddenfield的,这样的话我可以通过简单的设置这些控件的值来实现搜索和排序,因为ObjectDataSource会自动判断参数是否变化。
其中hfFilter的值是在查询面板中设置的,查询面板是我编的一个模板控件,主要实现客户端的面板显示及隐藏。而hfOrderBy的值是在GridView中的Sorting事件中设置的,这样是为了实现跨页排序。其代码如下:
    protected void gvItems_Sorting(object sender, GridViewSortEventArgs e)
    {
        string orderby = e.SortExpression;
        if (e.SortDirection == SortDirection.Descending)
        {
            orderby += " Desc";
        }
        hfOrderBy.Value = orderby;
    }

可以看到在整个页面的设计过程中,对服务器端控件,我都没有对外观作过设置,都是使用其的缺省的无样式,而显示的结果却不是这样,这主要归功于asp.net2.0的themes功能,利用skin可以象以前css样式一样来实现代码和样式分离。