预备知识:
ASP.NET并不是一门编程语言,而是一个统一的Web开发模型,她支持可视化的方式创建企业级网站,ASP.NET是.NET Framework的一部分,在ASP.NET中可以利用.NET Framework中的类进行编程,在ASP.NET 中可以用VB.NET、C#、JScript.NET等编程语言来开发web应用程序。 WebApplication(Web应用程序)是新的网站类型,但是在WebSite(网站)下代码不分命名空间,不利于工程化开发,CS代码修改后不需要重启,代码出错不易察觉,但是可以把WebSite程序转化为WebApplication,在WebSite上点击右键可以有转化为WebApplication的功能,记住,要想调试必须是在Debug的模式下才会有断点生效,并且F12转到定义,然后可以跟进和步过,调试是开发的关键,Session是针对不同的浏览器进程相关,Application是针对所有的应用程序相关,<% 中间包含C#代码在HTML里面 %> <%=中间放动态的表达式%>
静态网页:就是服务器向浏览器发送单纯的Html语言(只包含具有在客户端执行的代码),速度很快,但是维护不方便
动态网页:包含有在Web服务器端执行的代码,然后就是把这一堆都发送给浏览器,又因为浏览器只认识html(还有js脚本等),所以只能解析html,是在服务器动态组成html
名词解释:
IIS: Internet information server
CGI: common Getway interface,通用网关接口
CGI(Computer Graphics Interface) 计算机图形接口标准
1.解释一种错误的认识
其实在空间里拉过来的控件是完全一样的,就是在自己写的html的内容,因为服务器端的语言是asp的语言,要经过服务器解析为html,所以这里的使用方式和html是完全一样的,这里面的Botton和你托的控件是完全一样的,而浏览器只认html,和脚本,这里只是要翻译而已,这里明确的就是可以完全按照html的语法进行写,在一般的控件后的属性只要加个<input id = "abc" type ="button" runat = "server"> 这样就是说明为服务器语言,
asp语言的是解释性的语言(脚本),不利于工程化开发,只有运行到该页的时候才报错,使用webApplication和webSite修改的aspx都不需要重启、大规模的网站一般使用webApplication,并且在VS里还有个在网站上点击右键,有使website转换为webApplication的功能
2.简单的服务器-浏览器交互模式:
1.提交到服务器的表单元素一定要有name属性,如:<input id="Text1" type="text" name="UserName" /><input id="Submit1" type="submit" value="提交" />
2.提交页面的制作过程为:在网站下添加新项->添加一般应用程序->.ashx页面的出现->ProcessRequest事件里写代码,ProcessRequest事件是对所有的Http请求做的处理,呵呵,忘了,这里必须记住 服务器和浏览器的交互要有三个阶段,请求->处理->响应;哈
3.首先再建立一个html页面,在你想要提交的表单里添加 name属性啊,在form的action="aaa.aspx";就是要提交请求的页面,也可以的任意.aspx页面,在不是使用type = "submit"属性提交的情况下
可以使用 在form里添加 runat = "server" 并且 form 的 id = "form1" onclick="document.getElementById(‘form1’).submit()" type = "button" 使button的样子也可以提交表单,呵呵
4.在ProcessRequst事件中具体的方法是,先判断是否是由表单提交过来的,简单的方法就是在form里建立一个<input type = "hidden" value ="true" name = "ispostback"> 就是一个隐藏的控件,在浏览器端不可见,呵呵,为的就是看看是否是由本页提交过来的;
5.先获取该字段用 string ispostback = context.Request["ispostback"];
再用if判断就行了,几个常用的方法有:
string 模版全路径 = context.Server.MapPath("moban.htm");
string content = System.IO.File.ReadAllText(模版全路径); //因为这里本来就是字符串了,所以就
//不用再加双引号了哈
content.Replace("@num",number);//表示将本地模版的num的值变为number,现在还没有写回去,在这里的content是获得本地一个相同模版的全路径下的所有文本内容,则会使下面的替换成为可能,步骤是先将读取的本地模版字符串信息里的@变量替换为需要的字符串,然后再用context.Response.Write(content);将修改后的信息的完整页面写回请求页面
string fullpath = context.Server.MapPath("aaa.htm"); //获得文件全路径
string content = System.IO.File.ReadAllText(fullpath); //读取文件路径下的文件内容
context.Response.Write(content);//向页面写东西,也可以理解为响应
content = content.Replace("@value",number); //用number的值替换@value
注意是在html 中有 < input type = "text" value = "@value">的前提下
具体代码如下:
在.ashx的页面:
<%@ WebHandler Language="C#" Class="IncValue1" %>
using System;
using System.Web;
public class IncValue1 : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/html";
string ispostback = context.Request["ispostback"];
string number = context.Request["number"];
if (ispostback == "true")
{
int i = Convert.ToInt32(number);
i++;
number = i.ToString();
}
else
{
number = "0";
}
string fullpath = context.Server.MapPath("IncValue1.htm");
string content = System.IO.File.ReadAllText(fullpath);
content = content.Replace("@value",number);
context.Response.Write(content);
}
public bool IsReusable {
get {
return false;
}
}
}
在html中的页面:
<!--要记住的是,在表单里面只有key和value能提交到服务器,这里的Key就是name,这里的value就是Value,就是说在页面上的数据必须设置name和value属性,才能交给服务器,呵呵-->
<form action ="IncValue1.ashx" id = "form1">
<p>
<input type = "hidden" value ="true" name ="ispostback" />
姓名:<input id="Text1" type="text" name="number" value = "@value" /><input id="Submit1" type="button" value="自增" onclick ="document.getElementById(‘form1‘).submit()" /></p>
<!-- 如果是type = "button" ,则不会自动提交表单,需要自己写代码-->
</form>
ASP.NET学习笔记(一)-入门篇,布布扣,bubuko.com
ASP.NET学习笔记(一)-入门篇