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. python模块之psutil

    一.模块安装 1.简介 psutil是一个跨平台库(http://pythonhosted.org/psutil/)能够轻松实现获取系统运行的进程和系统利用率(包括CPU.内存.磁盘.网络等)信息. ...

  2. flutter 省市区选择器 city_pickers 的简单实用

    Github地址:https://github.com/hanxu317317/city_pickers packages地址: https://pub.flutter-io.cn/packages/ ...

  3. golang go程和出让时间片

    golang go程和出让时间片 func main() { go func(){ //创建一个子go程 ;i<;i++{ fmt.Println("--------fuck U--- ...

  4. beego 前后端分离登录验证

    conf>app.conf 文件添加一下参数 copyrequestbody=true sessionon =true routers>router.go 文件添加初始化路由 func i ...

  5. Android中相对布局的两个控件

    <Button android:id="@+id/button3" android:layout_width="wrap_content" android ...

  6. HugeGraph入门

    一.HugeGraph简介 最近在搞好友推荐方便的工作,选择了图数据的方法,使用并学习了HugeGraph,再次记录一下. HugeGraph是百度在2018年中旬开源的一款图数据库(Graph Da ...

  7. Oracle审计表AUD$处理方法

    Oracle版本:11.2.0,其他版本要测试DBMS_AUDIT_MGMT能否成功 1. 查询表,然后truncate select count(*) from aud$; truncate tab ...

  8. 小程序map地图上显示多个marker

    wxml <map id="myMap" style="width: {{mapWidth}}rpx; height: {{mapHeight}}rpx;" ...

  9. visual studio python快捷键

    打开交互式窗口: alt + i 智能提示: ctrl + j, or alt + ->

  10. 002 centos7中遇到的问题

    在关机的时候,发现输入密码之后竟然报错了,然后确认普通用户的密码没有问题.下面是处理方式. 一:问题 1.问题 当在终端执行sudo命令时,系统提示“caojun is not in the sudo ...