vs常用两个快捷键:打开即时窗口 ctrl+alt+i ; 快速代码格式排版:ctrl+k+d

一:Page:页面

Page.IsPostBack  判断页面是否第一次加载用

if(Page.IsPostBack ){

  //页面第二次加载才会执行里面的代码

}

但是:页面必须要满足几个条件

1:必须要在指页面是服务器控件runat="server"条件之下才能成立

2.必须是:AutoEventWireup="true"才会执行,【 false】就不会执行page里边的一些事件

Page.IsPostBack实现原理

他是通过隐藏域实现,F12会看到有这么一个div出现,表示页面点击提交按钮,第二次加载显示出来的

<div class="aspNetHidden"></div>

二:表单的提交方式

1:get

传值方式不同:地址栏

设计初衷不同:get用来获取数据,也能传数据,告诉服务器想要什么数据

传送数据大小不同:1kb

2:post

传值:放到内容,地址栏看不到

Post:用于传递数据

传送数据大小不同:2m

如果传送文件:必须用post

三:系统对象:Request  是由客户端发起的一个请求; response 响应给客户

方法1: 用于获取get传值 Request.QueryString["name"]

方法2:用于获取post传值 Request.Form["name"]

方法3:用户获取get或post传值 效率最慢 每次都要重新构建一个集合 Request.Params["name"]

方法4:用户获取get或post传值 如果get post同时存在取get 效率次之如果开始没找到需要遍历4个集合 Request["name"]

Response.Write("<script>alert('页面是第一次加载')</script>"); //  js脚本弹窗  alert【警报】Response【响应,(口头或书面的)回答,答复】;Write【书写;写字;写作;作曲;编写;写信】

//从服务器传给浏览器用【response】服务器响应给浏览器,从浏览器传给服务器用【request】请求。
Response.Write("请求方式:" + Request.RequestType + "<br/>");
Response.Write("用户地址ip:" + Request.UserHostAddress + "<br/>");
Response.Write("用户使用的浏览器:" + Request.UserAgent + "<br/>");

Response.Write("当前服务器名称为:" + Server.MachineName);

//将虚拟路径转换为磁盘上的物理路径,Request.MapPath("./a/b.aspx")就会得到D:\2014\WebSites\WebSite4\a\b.aspx。
//Request.UrlReferrer请求的来源,可以根据这个判断从百度搜的哪个关键词、防下载盗链、防图片盗链,可以伪造(比如迅雷)。 (使用全局一般处理程序);

ViewState["UrlReferrer"]=Request.UrlReferrer.ToString();  //其中ViewState["名称"] 是试图的意思,可以在页面 <%=ViewState["名称"] %> 来显示

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

四:Cookie和session的使用

  • Cookie作用

   解决http协议无状态,比如登陆的时候,服务器怎么知道你登陆没有,相当于起来了一个通行证的作用

   保持状态;记录用户操作习惯,比如广告推广;记住密码等等

存储必须使用:response 里边的cookie

读取必须使用:request 里边的cookie

写入:
Response.Cookies[Cookie的名称|下标].Value = 值;

读取:
变量 = Request.Cookies[Cookie的名称|下标].Value;
添加:
HttpCookie hc = new HttpCookie ("Cookie的名称","值");
Response.Cookies.Add(hc);

设置时效:
Response.Cookies["Cookie的名称"].Expires = DateTime.Now.AddHours(小时);

Cookie删除:

Response.Cookies["Cookie的名称"].Expires = DateTime.Now.AddHours(-1);  //也就是把设置的存放时间改成负值
Request.Cookies.Clear(); //只是清除cookie集合,无法删除本身

Cookie能不能存一个对象

直接是不能的,cookie本身不支持这个功能

但是可以给cookie扩展功能,支持存对象

列:

存值:

HttpCookie hc = new HttpCookie("hello");  //实例化一个cookie对象,键值对的格式

hc.Value = Server.UrlEncode("北极熊大"); //使用url编码解决中文乱码,读取需要用 Server.UrlDecode(值) 方法读取中文cookie值,其他的不需要

hc.Value = "ckljdsaoi";          //例如像这种字符串其他的不需要转编码 ,【每次存值都会覆盖上一个值】

hc.Expires = DateTime.Now.AddHours(2); //设置cookie的过期时间

Response.Cookies.Add(hc);        //添加cookie

读:在读取时一般用if判断是否为空才不容易报错

HttpCookie cc= Request.Cookies["hello"];   //先获取cookie

Response.Write(cc.Name + ":" + Server.UrlDecode(cc.Value)); //读取需要用 Server.UrlDecode(值) 方法读取中文cookie值,其实是解决中文乱码,其他的不需要

删除:

cc.Expires = DateTime.Now.AddDays(-1); //这里是让cookie过期,即不存在cookie,即退出

Response.Cookies.Add(cc); //在添加一次,当浏览器检查 Cookie 的到期日期时,浏览器便会丢弃这个现已过期的 Cookie,实现删除效果

Session

* 创建:Session[名称]=值;
* 获取:object 变量=Session[名称];  //session本是obj类型,输出需要转换
* 删除:Session[名称]=null;  //常用空值达到删除效果,Session.Remove("username");清除某个Session ;Session.Clear(); 只是清除集合里的,不常用;Session.Abandon(); 可以清除全部Session;

列:

存:

Session["username"]="kitty";

读: 在读取时一般用if判断是否为空才不容易报错

object username=Session["username"];  //获取session  ,一般习惯写:String username=Session["username"].ToString();

Response.Write(username.ToString());//强制转换为string类型输出

Session["username"] = null; //清除某个Session,这种方法简单,好记

Cookie和session二者区别

大小:
session比cookie大,cookie 4k左右

存储位置:
session:服务器,内存(默认)
cookie:客户端,文件里边

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

五、Application对象

  //--------------获得浏览页面的人数,可以用在浏览量用:Application对象,写法和session一样,只是作用不一样-----------------------------------------------

if (Application["Count"] == null)

{

Application["Count"] = 1;   //Application是全局的,只要一个用户改变其他用户都改变

}

else

{

Application["Count"] = Convert.ToInt32(Application["Count"]) + 1;

}

Response.Write("你是第" + Application["Count"] + "个访问者。");

//--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

六、常用的代码

Session["time"] = DateTime.Now;   //常用:DateTime.Now.ToString(yyyy-MM-dd  HH:mm:ss);  //输出当前时间

DateTime shijian = DateTime.Parse(Session["time"].ToString());   //将字符串转换为等效的时间格式
string time_now = (DateTime.Now - shijian).TotalSeconds.ToString();  //来哪当前时间 - 过去时间 得到  一共需要的时间

Response.Write("<br/>用时:"+(DateTime.Now - shijian).TotalMilliseconds + "毫秒<br/>");

public static int sj = new Random().Next(1, 101);//定义一个public公共 全局的static 静态变量,用存放1-100的 Random 随机数

Random random = new Random(); //调用系统给的随机数因子(时间的变换而变化)用随机数时 后台一般先实例化

if (!string.IsNullOrEmpty(jj)) {  }   //IsNullOrEmpty(jj) 表示jj为空值,前面加个!表示非,整体表示非空值,不为空

//去除重复
if (list.Contains(lottery)){   //如果数组list中存在随机数lotter就执行里面代码;Contains【包含】的意思,这里用作是否存在
  i--;
  continue;       //继续执行 continue【持续;继续存在;不断发生;继续做;不停地干;(朝相同方向)走,移动;延伸】
}

   string a = "a/dsafasdfsa/dfasd/f";

string[] c = a.Split('/');  //Split分裂,以 / 划分字符串,char类型截取/后面的字符

Response.Write(c[2].ToString());  //以第二个 / 读取字符串后面的字符串 这里会输出dfasd

Server的跳转方式:3种

Server.Execute:把跳转后的页面内容拿到跳转前的页面合并

Server.Transfer:把跳转前的页面内容拿到跳转后的页面合并

Response.Redirect:直接跳转到新的页面

Response.Redirect("http://www.baidu.com", false); ////响应.重定向("路径",是否终止当前页默认false否所以经常不写值填一个路径就可以了)

七、IO流:

<a href="BookRead.aspx?bookname=侠盗飞车.txt">侠盗飞车小说</a>

后台代码:

using System.IO;    //输写文件需要引用

using System.Text;  //打印文本需要

   string bookname = Request["bookname"].ToString();   //获取传过来的值

    //通过小说名称获取到小说内容

FileStream f = File.Open(Server.MapPath("~") + "/books/" + bookname, FileMode.Open);    //【FileStream】文件流   Server.MapPath("~")是取绝对路径 ,FileMode.Open 是 文件模式.打开

//要设置编码不设置编码会报错,而且文本文件可能还需要另存为utf-8的格式

StreamReader sr = new  StreamReader(f, Encoding.UTF8);   ////StreamReader 是io流的流阅读器  Encoding:是编码的意思

Response.Write("<h3>" + bookname + "</h3>");

while (!sr.EndOfStream) //判断是否读取完了

{

string content = sr.ReadLine();  //每行去读取

Response.Write(content);

Response.Write("<hr/>");

}

sr.Close();  //用完需要关闭

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

  /***********************************io流----获取页面触发异常是,将信息写入记事本中,习惯放在全局变量里面,*************************************/ 

    //获取发生异常信息

string errorMsg = Server.GetLastError().InnerException.Message;

//获取异常发生的页面

string rewUrl = Request.RawUrl;

//错误发生时间

//记录一个日志(写错误信息到文件)

string url = Server.MapPath("~/log/log.txt");

FileStream fs = new FileStream(url, FileMode.Append);

StreamWriter write = new StreamWriter(fs);             //字符串写入流

write.WriteLine("错误发生页面:" + rewUrl);

write.WriteLine("错误发生时间:" + DateTime.Now.ToString());

write.WriteLine("错误发生信息:" + errorMsg);

write.WriteLine("---------------------------------");

write.Close();

fs.Close();

//清空异常

Server.ClearError();

Response.Redirect("Error.aspx");

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

//其他常用访问:比如所有的txt文件

string[] filenames = Directory.GetFiles(Server.MapPath("~") + "/books/", "*.txt");

//创建一个文件夹访问类

DirectoryInfo di = new DirectoryInfo(Server.MapPath("~") + "/books/");

//得到该文件夹下所有文件

foreach (FileInfo item in di.GetFiles())

{

string filename = item.Name;//所有文件夹名

//区文件名不包括后缀

string needname = filename.Substring(0, filename.IndexOf('.'));

}

//--------------------------------------------------------------------------------------比如下面这段代码:图片img文件的上传------------------------------------------------------------

string newfliename = "空或者给一张默认图片"; //定义一张打印给页面的图片名称

//判断是否有文件上传,文件数量Count【计算,总数】

if (Request.Files.Count > 0)

{

string fliename = Request.Files[0].FileName;//获得文件名

if (!string.IsNullOrWhiteSpace(fliename)) //前面加了个!表示非空

{

string filepath = "~/img/" + fliename;     //文件路径赋值给变量,下面用来判断文件是否存在

//判断服务器文件是否存在

/*if (System.IO.File.Exists(Server.MapPath(filepath))) //如果(文件存在)

{

//System.IO.Directory.Delete(Server.MapPath("filepath"), true);//删除文件夹

//System.IO.File.Delete(Server.MapPath(filepath));//删除文件

}*/

int num = fliename.LastIndexOf("."); //从右向左索引到文件名的点“.”的位置;/*indexOf(从前往后查)和 lastIndexOf(从后往前查) 都是连续索引文件的意思*/

string str = fliename.Substring(num + 1).Trim().ToLower();//获取文件后缀名;以点后面一位开始截取字符串

string guif = Guid.NewGuid().ToString();//产生一个随机不重复的字符串

newfliename = guif + "." + str; //把新文件名名称赋值

//三目运算符,判断文件是否存在(newfliename = 存在?新的文件名:原始文件名)

newfliename = System.IO.File.Exists(Server.MapPath(filepath)) ? newfliename : fliename;

if (str == "png" || str == "jpg" || str == "gif")

{

string fullname = Server.MapPath("~") + "/img/" + newfliename; //获取绝对路径//构建一个完整的路径Server.MapPath("~")

Request.Files[0].SaveAs(fullname);          //保存上传的文件,到指定位置

}

else

{

Response.Write("<script>alert('只能上传图片,你上传的不是图片!')</script>");

return;

}

}     

}

/***********************************************************************************************************************************************************************************************************************/

------------------------------------------------------------------------------------------------------------------------------可以在后台操作的一些HTML代码

//html编码操作

Response.Write("<br/>");

Response.Write(Server.HtmlEncode("<h2>我是标题</h2>"));

//html解码操作

Response.Write(Server.HtmlDecode("<h2>我是标题</h2>"));

//URL编码与解码  解决中文乱码问题,起到一个简单的加密作用

<asp:Image ID="Image1" CssClass="myimg" ImageUrl="~/img/cfop.jpg" runat="server" />

Response.Write("图片的路径:" + Image1.ImageUrl);   //打印图片路径

Response.Write("<br/>");

//给路径编码和解码

string urlcode = Server.UrlEncode(Image1.ImageUrl);

Response.Write("对url进行编码操作:" + urlcode);

Response.Write("<br/>");

Response.Write("对url进行解码操作:" + Server.UrlDecode(urlcode));

*******************************************************************************************以上是我一些常用到的基础,太多了,后面在继续发布,看着有点乱,但是我看懂就行了,其实每个人在学习过程中,都要习惯性做自己的笔记,只有自己写出来的代码才属于自己,

别人的你只能东拼西凑。往往某个知识点个人感觉费劲好长时间查百度,好不容易搞懂了,久而久之不用又忘了,又得浪费时间去找度娘。到不如一直更新自己案例,不断的完善自己的一个项目来的实际, 这样的笔记,在你想用什么功能,马上可以看对应的代码。

下期发布内容:

三层架构:

USL: user show layer 用户显示层
BLL: business logic layer 业务逻辑层 处理逻辑的 (server)
DAL: data accesss layer 数据访问层 (dao)
Model: 进行各层之间数据交互

三层架构的优点

1:有利于团队开发
2: 降低耦合性,提高扩展性与可维护性

asp.net编程基础的更多相关文章

  1. 16第一章 ASP.Net编程基础知识

    第一章        ASP.Net编程基础知识 第一章        ASP.Net编程基础知识 本章首先介绍用ASP.Net技术编制服务器端动态网页所需的网络和HTML标记语言方面的有关知识.然后 ...

  2. ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 基础教程总结 ASP.NET Core 基础教程总算是有了个简单 ...

  3. ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 登录登出 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 登录登出 上一章节我们总算完善了注册的功能,而且也添加了一个用户,现 ...

  4. ASP.NET Core 新增用户 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 新增用户 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 新增用户 上一章节我们实现了一个注册表单,但也留了一些东西还没完成, ...

  5. ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core 用户注册 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 用户注册 上一章节我们终于迁移完了 Identity 的数据,也创建 ...

  6. ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Identity 迁移数据 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 迁移数据 上一章节中我们配置了 ...

  7. ASP.NET Core Identity 配置 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Identity 配置 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 配置 上一章节我们简单介绍了下 Id ...

  8. ASP.NET Core Identity 验证特性 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Identity 验证特性 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 验证特性 上一章节我们简单介绍了 ...

  9. ASP.NET Core Identity 框架 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Identity 框架 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 框架 前面我们使用了 N 多个章节, ...

随机推荐

  1. 计数器的原理,设计及verilog实现

    若计数器由n个触发器组成,则计数器的位数为n,所能计数的最大模数为2的n次幂.以下为同步二进制加法计数器电路; 驱动方程:状态图 状态方程(此时的Q0,Q1为上一次状态值): 下例是同步4位2进制计数 ...

  2. 1054 The Dominant Color (20)(20 分)

    Behind the scenes in the computer's memory, color is always talked about as a series of 24 bits of i ...

  3. 64位内核开发第十二讲,进程监视,ring3跟ring0事件同步.

    一丶同步与互斥详解,以及实现一个进程监视软件. 1.用于线程同步的 KEVENT 事件很简单分别分为 事件状态. 以及事件类别. 事件状态: 有信号 Signaled 无信号 Non-signaled ...

  4. 64位内核开发第四讲,查看SSDT表与showSSDT表

    目录 SSDt表与ShadowSSDT表的查看. 一丶SSDT表 1.什么是SSDT表 2.查看步骤 二丶ShadowSSDT表 1.什么是ShadowSSDT表 2.如何查看. 三丶工具介绍 SSD ...

  5. 解决tecplot中壁面速度不为0的问题

    当直接将fluent的.cas文件和.dat文件导入tecplot中进行后处理的时候,我们会发现,壁面速度不为0的情况(见上图). 出现这样问题的原因为:fluent的计算数据是存储在每个单元的中心位 ...

  6. postman上传excel,java后台读取excel生成到指定位置进行备份,并且把excel中的数据添加到数据库

    最近要做个前端网页上传excel,数据直接添加到数据库的功能..在此写个读取excel的demo. 首先新建springboot的web项目 导包,读取excel可以用poi也可以用jxl,这里本文用 ...

  7. Anaconda3自带jupyter

    1.cmd命令行中输入 JupyterNotebook 2.系统自动调起下面页面(注册端口冲突是打不开的)

  8. Ubuntu 18.04.1 安装java8

    ###下载tar.gz 点击选择接收协议 下载完文件之后,将文件从Windows复制到ubuntu上,可以用xShell,putty,git.这里用git 下载安装git之后,再任意位置右击,选择 g ...

  9. Sqlmap全参数详解

    sqlmap全参数详解 sqlmap是在sql注入中非常常用的一款工具,由于其开源性,适合从个人到企业,从学习到实战,各领域各阶段的应用,我们还可以将它改造成我们自己独有的渗透利器.这款工具中,大大小 ...

  10. hyper-v启动虚拟机时提示“The application encountered an error while attempting to change the state of the machine ‘虚拟机名称'”如何处理?

    1. 找出发生这一问题的事件代号 1.1 在开始菜单中搜索程序Event Viewer并点击进入 1.2 点击路径如下: “Applications and Services Logs > Mi ...