易截截图软件、单文件、免安装、纯绿色、仅160KB

谈谈ASP.NET中的“地址决定内容”问题

谈谈ASP.NET中的“地址决定内容”问题
什么是地址决定内容?
你在网上逛,看到一个有趣的页面,于是你把地址栏里的内容复制下来,发给正在跟你聊天的网友:“看看这个页面,有趣极了”,你的朋友打开你发的链接,看到的内容应该和你正在看的一样。也即,页面的主要内容应当取决于地址栏中的地址。但在ASP.NET中,由于其独特的WebForm模型,可能会使得开发人员忽略了这重要的一点。
 
比如某在线小说网站的小说阅读界面是这样的:
 
页面分为二块,左块是目录列表,右块为正文,点击目录里的章节链接,右块里就显示对应章节的正文内容。
思路一:目录块和正文块都用GridView来做,GridView1绑定到目录表,用LinkButton显示章节标题,点击LinkButton后,在相关的事件处理函数里会查询对应的正文表,并绑定到GridView2上。
这个思路貌似OK,但是:无论你看的是哪一章节,地址栏里的地址都是不变的!这意味着,你无法把单独的一章的地址和别人分享,也不能把看到一半的章节添加到收藏夹里。在这个方案中,页面的主要内容——章节正文,与页面地址没有对应关系,所有章节都对应于同一地址。
改进:用url查询字符串标识章节,类似于xxx.aspx?chapter=1&……的形式,后台从查询参数获得章节号。所以GridView1里不用LinkButton,而改用HyperLink;并在Page_Load中取得查询串,查表,绑定GridView2。
总结:一个页面的“主要内容”一般对应于数据库中的某条记录,为了“地址决定内容”,可能需要把“键”放到地址中。
补充:在改进后的方案中,由于GridView2不在回传时绑定,所以可关闭其ViewState,以缩减生成的html页。


相关文档:

asp.net 屏蔽 只能 是数字

 //数字字符
       public static string KeepNum(string str)
       {
           char[] tmp = new char[str.Length];
           char[ ......

提高Asp.Net网站性能


不要使用不必要的Session,和ASP中一样,在不必要的时候不要使用Session 
不使用不必要的Server Control  
不使用不必要的ViewState   
不要用Exception控制程序流程
禁用VB和Jscript动态数据类型
使用存储过程完成数据访问
只读数据访问不要使用DataSet  
关闭ASP.N ......

asp.net检测网页特性

代码如下:
System.Web.HttpBrowserCapabilities browser = Request.Browser;
string s = "Browser Capabilities\n"
"Type = " + browser.Type ;
"Name = " + browser.Browser ;
"Version = " + browser.Version ;
"Major Version = " + browser.Ma ......

asp.net profile

使用ASP.NET 2.0 Profile存储用户信息[翻译] Level 200
作者: Stephen Walther
原文地址:http://msdn.microsoft.com/asp.net/default.aspx?pull=/library/en-us/dnvs05/html/UserProfiles.asp
译者:Tony Qu
概要:许多ASP.NET应用程序需要跨访问的用户属性跟踪功能,在ASP.NET1.1中,我们只能人工实现这一功能。但如 ......

在winxp中部署asp.net mvc

我们在首次部署mvc的项目时通常会遇到一点问题。M$已经在Global.asax.cs文件中包含了这两句注释的提示。
    // Note: For instructions on enabling IIS6 or IIS7 classic mode,
    // visit http://go.microsoft.com/?LinkId=9394801
但是我们访问这个网址看到上面的文章对iis5.1(win ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号