aspx,ascx和ashx的区别与联系

2014-07-28 19:43:15|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C#, Web, ASP.NET|来源:唯设编程网

这篇文章对.net网站设计常用的.aspx,.ascx,.ashx文件格式进行解释,分析他们的适用场合。重点对大家不太熟悉的.ashx文件进行介绍,并给出一个使用.ashx修改用户登录密码的完整案例,该案例包含了客户端和服务器端完整代码,供参考。

1、.aspx

这种文件代表Web窗体设计页面。Web窗体页由两部分组成:展示页面(html、服务器控件和静态文本)和该页的编程逻辑(VS中的设计视图和代码视图可分别看到它们对应得文件)。VS将这两个组成部分分别存储在一个单独的文件中。展示页面在.aspx 文件中创建,而对应的编程逻辑在.aspx.cs文件中进行定义。

2、.ascx

这种文件代表asp.net的用户控件,是作为一种封装了特定功能和行为(这两者要被用在Web应用程序的各种页面上)的Web页面被开发的。一个用户控件包含了html、代码和其他Web或者用户控件的组合,并在Web服务器上以自己的文件格式保存,其扩展名是*.ascx。asp.net里的缺省配置并不允许Web客户端通过url来访问这些文件,但是这个网站的其他页面可以集成这些文件里所包含的功能。

3、.ashx

前面两种文件我们都经常使用,而这种类型的文件才是本文介绍的重点。

3.1 基本介绍

.ashx文件是主要用来写web handler的。.ashx文件与.aspx文件类似,可以通过它来调用HttpHandler类,它免去了普通.aspx页面的控件解析以及页面处理的过程。其实就是带HTML和C#的混合文件。

.ashx文件适合产生供浏览器处理的、不需要回发处理的数据格式,例如用于生成动态图片、动态文本等内容。

使用.ashx 可以让你专注于编程而不用管相关的web技术。我们熟知的.aspx是要做html控件树解析的,.aspx包含的所有html实际上是一个类,所有的html都是类里面的成员,这个过程在.ashx是不需要的。

ashx必须包含IsReusable属性(这个属性代表是否可复用,通常为true),而如果要在ashx文件用使用Session必须实现IRequiresSessionState接口.

3.2 使用实例

下面是一个简单的实现修改登录用户密码的示例。

服务器端代码如下:

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;
            }
        }
    }
}
<12>
发表评论0条 】
网友评论(共?条评论)..
aspx,ascx和ashx的区别与联系