asp网站的缺点,无锡做网站设计的公司,经典设计作品,网站建设面谈销售话术做asp.net开发的对.aspx,.ascx和.ashx都不会陌生。关于它们#xff0c;网上有很多文章介绍。“纸上得来终觉浅#xff0c;绝知此事要躬行”#xff0c;下面自己总结一下做个笔记。 1、.aspx Web窗体设计页面。Web窗体页由两部分组成#xff1a;视觉元素#xff08;html、服…做asp.net开发的对.aspx,.ascx和.ashx都不会陌生。关于它们网上有很多文章介绍。“纸上得来终觉浅绝知此事要躬行”下面自己总结一下做个笔记。 1、.aspx Web窗体设计页面。Web窗体页由两部分组成视觉元素html、服务器控件和静态文本和该页的编程逻辑(VS中的设计视图和代码视图可分别看到它们对应得文件)。VS将这两个组成部分分别存储在一个单独的文件中。视觉元素在.aspx 文件中创建。 2、.ascx asp.net的用户控件,是作为一种封装了特定功能和行为这两者要被用在Web应用程序的各种页面上的Web页面被开发的。一个用户控件包含了html、代码和其他Web或者用户控件的组合并在Web服务器上以自己的文件格式保存其扩展名是*.ascx。asp.net里的缺省配置并不允许Web客户端通过url来访问这些文件但是这个网站的其他页面可以集成这些文件里所包含的功能。 3、.ashx 前面两个都太熟悉了这个才是要讲的重点。 1、使用举例 .ashx文件是主要用来写web handler的。使用.ashx 可以让你专注于编程而不用管相关的web技术。我们熟知的.aspx是要做html控件树解析的.aspx包含的所有html实际上是一个类所有的html都是类里面的成员这个过程在.ashx是不需要的。ashx必须包含IsReusable属性这个属性代表是否可复用通常为true而如果要在ashx文件用使用Session必须实现IRequiresSessionState接口. 一个简单的实现修改登录用户密码的示例 Code 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; } } } } 客户端的调用js和页面部分 Code % Page LanguageC# AutoEventWireuptrue CodeBehindASHXTest.aspx.cs InheritsASHXTest % !DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd html xmlnshttp://www.w3.org/1999/xhtml head runatserver titlemytest/title script typetext/javascript function $(s) { if (document.getElementById) { return eval(document.getElementById( s )); } else { return eval(document.all. s); } } function createXMLHTTP() { var xmlHttp false; var arrSignatures [MSXML2.XMLHTTP.5.0, MSXML2.XMLHTTP.4.0, MSXML2.XMLHTTP.3.0, MSXML2.XMLHTTP, Microsoft.XMLHTTP]; for (var i 0; i arrSignatures.length; i) { try { xmlHttp new ActiveXObject(arrSignatures[i]); return xmlHttp; } catch (oError) { xmlHttp false; //ignore } } // throw new Error(MSXML is not installed on your system.); if (!xmlHttp typeof XMLHttpRequest ! undefined) { xmlHttp new XMLHttpRequest(); } return xmlHttp; } var xmlReq createXMLHTTP(); // 发送ajax处理请求(这里简单验证旧密码的有效性) function validateOldPwd(oTxt) { var url /HandlerTest.ashx?actionmodifyPwdpwd escape(oTxt.value); //.ashx文件 xmlReq.open(get, url, true); xmlReq.setRequestHeader(If-Modified-Since, 0); xmlReq.onreadystatechange callBack; xmlReq.send(url); // 发送文本 } function callBack() { if (xmlReq.readyState 4) { if (xmlReq.status 200) { alert(xmlReq.responseText); // 接收文本 } else if (xmlReq.status 404) { alert(Requested URL is not found.); } else if (xmlReq.status 403) { alert(Access denied.); } else alert(status is xmlReq.status); } } /script /head body form idform1 runatserver div input idtxtOldPwd typetext οnblurvalidateOldPwd(this) / /div /form /body /html 分析 a、以前我们通常都是通过一个简单的aspx文件实现的功能其实通过ashx也可以。 笔者曾经写过的一篇ajax:数据传输方式简介通过对比我们发现aspx要将前后台显示和处理逻辑分开,所以就弄成了两个文件,其实,在最终编译的时候,aspx和cs还是会编译到同一个类中去.这中间就要设计html的一些逻辑处理而ashx不同,它只是简单的对web http请求的直接返回你想要返回的结果.比aspx少处理了html的过程但是ashx也可以处理html的一些逻辑只是通常都不这么用。理论上ashx比aspx要快。 b、还是在相同的旧文里我们知道数据传输的几种方式其实ashx都可以实现修改ashx文件里context.Response.ContentType 即可这里不再赘述了。 2、ashx特别适合于生成动态图片生成动态文本(纯文本jsonxmljavascript等即可)等。 3、.ashx文件有个缺点它处理控件的回发事件非常麻烦。处理数据的回发通常都需要一些.aspx页的功能只有自己手动处理这些功能还不如直接建一个aspx文件来处理。所以一般使用.ashx输出一些不需要回发处理的项目即可。 4、总结 aspx--PPage ascx--CControl ashx--HHttpHandler 当浏览器访问web服务器我们最终接收到的还是html文本。浏览器通过渲染引擎解释这些标签在屏幕上展现出可见的效果。而asp.net不过就是我们应用的一种平台技术来变相解释html的说白了它就是为了提高生产率它的技术术语再多本质上还是html范畴内的东西如果你不通过那些动态页面技术完全利用html和浏览器当然包括js技术来实现动态页面效果那么你会发现效果有了代码量也相当可观.所以说web开发的底层就是一堆的html标签无论是asp.net还是jsp都是对html某种方式的包装是html的产物。 转载于:https://www.cnblogs.com/yefengmeander/archive/2011/11/08/2887989.html