2014-07-28 19:43:15|?次阅读|上传:wustguangh【已有?条评论】发表评论
关键词:C#, Web, ASP.NET|来源:唯设编程网
这篇文章对.net网站设计常用的.aspx,.ascx,.ashx文件格式进行解释,分析他们的适用场合。重点对大家不太熟悉的.ashx文件进行介绍,并给出一个使用.ashx修改用户登录密码的完整案例,该案例包含了客户端和服务器端完整代码,供参考。
这种文件代表Web窗体设计页面。Web窗体页由两部分组成:展示页面(html、服务器控件和静态文本)和该页的编程逻辑(VS中的设计视图和代码视图可分别看到它们对应得文件)。VS将这两个组成部分分别存储在一个单独的文件中。展示页面在.aspx 文件中创建,而对应的编程逻辑在.aspx.cs文件中进行定义。
这种文件代表asp.net的用户控件,是作为一种封装了特定功能和行为(这两者要被用在Web应用程序的各种页面上)的Web页面被开发的。一个用户控件包含了html、代码和其他Web或者用户控件的组合,并在Web服务器上以自己的文件格式保存,其扩展名是*.ascx。asp.net里的缺省配置并不允许Web客户端通过url来访问这些文件,但是这个网站的其他页面可以集成这些文件里所包含的功能。
前面两种文件我们都经常使用,而这种类型的文件才是本文介绍的重点。
.ashx文件是主要用来写web handler的。.ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程。其实就是带HTML和C#的混合文件。
.ashx文件适合产生供浏览器处理的、不需要回发处理的数据格式,例如用于生成动态图片、动态文本等内容。
使用.ashx 可以让你专注于编程而不用管相关的web技术。我们熟知的.aspx是要做html控件树解析的,.aspx包含的所有html实际上是一个类,所有的html都是类里面的成员,这个过程在.ashx是不需要的。
ashx必须包含IsReusable属性(这个属性代表是否可复用,通常为true),而如果要在ashx文件用使用Session必须实现IRequiresSessionState接口.
下面是一个简单的实现修改登录用户密码的示例。
服务器端代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; using System.Web.SessionState; namespace Test { public class HandlerTest : IHttpHandler, IRequiresSessionState { public void ProcessRequest(HttpContext context) { context.Response.ClearContent(); context.Response.ContentType = "text/plain"; context.Response.Cache.SetCacheability(HttpCacheability.NoCache); //无缓存 string action = context.Request.Params["action"]; //外部请求 if (action == "modifyPwd") //用户改密码 { string oldPwd = context.Request.Params["pwd"]; //在ashx文件用使用Session必须实现IRequiresSessionState接口 //Session["LogedUser"]是登录用户的会话,用户名和密码都是test if (oldPwd.ToUpper() != ((context.Session["LogedUser"]) as Customer).Password.ToUpper()) //用户输入的旧密码和当前登录用户的不相同 { context.Response.Write("旧密码输入错误!"); } else { context.Response.Write("旧密码输入正确!"); } } context.Response.End(); } public bool IsReusable { get { return true; } } } }