黑马程序员—asp.net基础篇1

来源:互联网 发布:买车软件哪个好 编辑:程序博客网 时间:2024/04/29 15:53

----------------------   Windows Phone 7手机开发 .Net培训    期待与您交流! ----------------------

 

前言:从今天起,开始学习asp.net,当然是从基础的学起了,坚持一下下。

(1)什么是Asp.net

       ASp.net是一种动态网页技术,在服务器端运行.Net代码,动态生成html。可以使用JavaScript、Dom在浏览器端完成很多工作,但是有很多工作无法再浏览器端完成,比如存储数据、访问数据库、复杂的业务逻辑运算、安全性要求高的运算等。

     服务器端控件和HTML控件的生成关系:在aspx页面中可以使用服务器端控件,简化开发,浏览器之人html,因此服务器端控件会渲染到浏览器成html,TextBox→<input type="text"/>。服务器控件不是新的控件,在浏览器端仍然是生成html标签,但是并不是什么地方用服务器端控件都好。

(2)Web应用程序和网站

     WebApplication(Web应用程序)和WebSite(网站)的区别:WebSite是为了兼容从ASP转过来的开发人员的习惯而存在的,用起来简单,比如不需要创建命名空间、cs代码修改后不需要重启就能看到变化(无论是WebSite还是WebApplication,修改aspx都不需要重启),但是不利于工程化开发,比如代码出错不容易发现,代码部分命名空间。开发技术上没有任何区别,只是开发、调试习惯不同而已。

(3) 基于ashx的asp.net开发

 a. 新建一个html程序

<form action="hello1.ashx">
<input type="text" name="UserName" /><input type="submit"  value="提交"/>
</form>

新建一个一般处理程序hello1.ashx

在ProcessRequest方法中写入以下内容:

           context.Response.ContentType = "text/html";
           context.Response.Write(@"<form action='hello1.ashx'>
<input type='text' name='UserName' value='"+username+"'/><input type='submit'  value='提交'/></form>");

在浏览器中查看hello.ashx程序,在浏览器页面上会出现hello1.htm的内容,相当于把hello.html的内容绘制在了浏览器中,点击提交还会回到此页面。

b.新建一个hello2.htm

<form action="hello2.ashx">
<input type="hidden" name="isPostBack" value="true"/>//这是一个隐藏字段,只有提交表单时才会显示
姓名:<input type="text" name="UserName" value="@value"/><input type="submit" value="提交" />
@msg

新建一个hello2.ashx

 

context.Response.ContentType = "text/plain";
        string fullPath = context.Server.MapPath("hello2.htm");//返回文件的全路径
        string content = System.IO.File.ReadAllText(fullPath);//读取文件中的内容
        string username = context.Request["UserName"];
        string isPostBack = context.Request["isPostBack"];
        string msg = "";
        if (isPostBack == "true")
        {
            context.Response.Write("提交进入");
            msg = username + "你好";

        }
        else
        {
            context.Response.Write("直接进入");
            username = "";
            msg = "";
        }
       
        content = content.Replace("@value", username);
        content = content.Replace("@msg",msg);
        context.Response.Write(content);//向屏幕中输出文件中的内容

在浏览器中浏览该程序,因为并没有向服务器提交表单,因此isPostBack的值并没有提交到服务器。当点击提交的时候,浏览器将表单中的name/value键值对提交给服务器(即参数)服务器经过处理,再响应浏览器的请求。@value和@msg只是自己设定的占位符,等待填值。当用户直接进入hello2.ashx时,两个值都为空。hello2.htm相当于模板。

提交到服务器的表单一定要写name属性,id是给Dom和Jquery使用的,name是给服务器用的。

表单域只有设定了name的才会被提交给服务器(用get方式看的清楚),如果给submit按钮设定name,那么按钮的value也会被提交给服务器。

4.Get和Post的区别

Get(默认值)是通过URL传递表单值,post传递的表单值是隐藏到http报文中,url看不到。Get和post的区别:get是通过url传递表单值,post通过url看不到表单域的值:get传递的数量是有限的,如果要传递大数据量不能用get,比如type=”file” 上传文章、type=”password”传递密码或者<textarea>发表打断文章,post则没有这个限制;post会有浏览器提示重新提交表单的问题,get则没有。对于post的表单重新敲地址栏再刷新就不会提示重新提交了,因为重新敲地址栏就没有偷偷提交的数据了

Get方式URL数据格式:服务端文件名后跟着“?”,由于客户端可能向服务器端提交多个键值对,键值对之间用“&”进行分割,如果URL中有汉字、特殊符号等,则需要对URL进行编码。

 

----------------------   Windows Phone 7手机开发 .Net培训    期待与您交流! ----------------------