谈谈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页。
相关文档:
验证码页面后台Code.aspx.cs代码:(已经将验证码存于session中session["code"],可在调用页面直接读取session)
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebCon ......
ASP.NET获取客户端IP/用户名等信息
1. 在ASP.NET中专用属性:
获取服务器电脑名:Page.Server.ManchineName
获取用户信息:Page.User
获取客户端电脑名:Page.Request.UserHostName
获取客户端电脑IP:Page.Request.UserHostAddress
2. 在网络编程中的通用方法:
获取当前电脑名:static System. ......
最近在国外的网站乱走一通,发现一些比较好的文章,收集整理加于自己的理解,作为笔记形式记录下来,让以后自己有个回忆。
ASP.NET是一个非常强大的构建Web应用的平台,它提供了极大的灵活性和能力以致于可以用它来构建所有类型的Web应用.绝大多数的人只熟悉高层的框架如WebForms和WebS ......
在使用asp.net编写webservice时,默认情况下是不支持session的,但我们可以把WebMethod的EnableSession选项设为true来显式的打开它,请看以下例子:
1 新建网站WebSite
2 新建web服务WebService.asmx,它具有以下两个方法:
[WebMethod(EnableSession = true)]
public string Login(string name)
{
  ......