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

推荐订阅源

V
Vulnerabilities – Threatpost
Blog — PlanetScale
Blog — PlanetScale
博客园_首页
Y
Y Combinator Blog
The Cloudflare Blog
V
V2EX
Microsoft Security Blog
Microsoft Security Blog
V
Visual Studio Blog
MyScale Blog
MyScale Blog
Martin Fowler
Martin Fowler
T
Tailwind CSS Blog
P
Privacy International News Feed
S
Securelist
T
The Blog of Author Tim Ferriss
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Tor Project blog
P
Proofpoint News Feed
Project Zero
Project Zero
D
Darknet – Hacking Tools, Hacker News & Cyber Security
MongoDB | Blog
MongoDB | Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Help Net Security
美团技术团队
The GitHub Blog
The GitHub Blog
SecWiki News
SecWiki News
酷 壳 – CoolShell
酷 壳 – CoolShell
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Security Latest
Security Latest
NISL@THU
NISL@THU
www.infosecurity-magazine.com
www.infosecurity-magazine.com
S
Secure Thoughts
Cyberwarzone
Cyberwarzone
Scott Helme
Scott Helme
IT之家
IT之家
Last Week in AI
Last Week in AI
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
C
CERT Recently Published Vulnerability Notes
Google DeepMind News
Google DeepMind News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
P
Privacy & Cybersecurity Law Blog
A
About on SuperTechFans
Microsoft Azure Blog
Microsoft Azure Blog
M
MIT News - Artificial intelligence
Spread Privacy
Spread Privacy
S
Schneier on Security
L
Lohrmann on Cybersecurity
S
Security Affairs
Apple Machine Learning Research
Apple Machine Learning Research
爱范儿
爱范儿
云风的 BLOG
云风的 BLOG

博客园 - 七思软件

基于.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样式一样来实现代码和样式分离。