目录
Asp.net提供了大量的对象类库,在这些库中包含了许多封装好的内置对象我们可以直接使用这些对象方法和属性,从而简单快速实现很多功能。
一、Page类
Page类通常与扩展名为.aspx的文件相关联,这些文件在运行时被编译为Page对象,并被缓存在服务器内存中。
1、Isvalid方法
指示页验证是否成功。当所有的验证都正确的话,Isvalid就是true,其余情况都是false。
2、IsPostBack方法
指示该页是否正为响应客户端回发而加载,或者它是否正被首次加载和访问。
它的默认值为false(即第一次访问的时候是false),然后后面就是true。所以使用的时候,一般都是!IsPostBack。
3、Isvalid和IsPostBack的使用
首先,试试IsPostBack的使用:
初始状态:
按一下button:
这回发现,这并不是我想要的效果,我想要的是首先输出111 222 但是,得到的结果确实这样子的。无法达到预期值的原因:第一个的判断语句放错位置了,这个判断的是第一次访问,但是如果按一下button,就有一次刷新了,所以并不属于第一次访问,所以不会出现111 222这些数字。(我自己的的理解)。
所以,在修改的时候,就需要将这个放在初始化状态里面,而不是button里面。即:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ListBox1.Items.Add("111");
ListBox1.Items.Add("222");
}
else
{
ListBox1.Items.Add("444");
ListBox1.Items.Add("555");
}
}
然后,在验证一下:
成功完成验证。(第一次输出111 222,后面都输出的是444 555) 。
然后开始验证Isvalid方法:
输入777,然后看一下效果:
结果:
可以看到他都会加上去。即验证全部通过。那如果我们想要看一下验证不通过的情况呢?
加一个RequiredFieldValidator,进行验证:
注意:添加了验证控件,就需要在初始化的代码中添加一个语句:
UnobtrusiveValidationMode = UnobtrusiveValidationMode.None;
否则会出错:
但是,在出现这个错误的时候,我突然意识到了一件事,我只添加了一个文本框,但是如果要实现验证不通过,就得让这个文本框为空,那么当然不会在往listbox里面添加东西了。所以我就又加了一个文本框,来验证为空的情况:
不给TextBox1输入数值(即为空,不满足验证),然后在TextBox2中输入数字,点击按钮,看看是否会添加进去内容:
初始状态:
给TextBox2中输入数字后,点击按钮:
可以看到,里面没有添加进去内容且验证控件显示出错状态。
二、Response对象
1、Response.Write
使用该语句写的内容,不管前面是否有东西,都会在最前面显示。相当于输出的语句。
(1)可以直接输出文字
Response.Write("你好啊!");
结果:
(2)输出列表
Response.Write("专业名称列表:");
Response.Write("<ul>");
Response.Write("<li>计算机网络技术");
Response.Write("<li>计算机信息管理");
Response.Write("<li>软件技术与开发");
Response.Write("<ul>");
结果:
(3)输出窗口
第一种方式
Response.Write("<script language=javascript>alert('欢迎你!');</script>");
结果:
第二种方式
ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('你好啊!');</script>");
这种方式,在学校的电脑上运行时,会和初始界面同时出现。但是在我的电脑中不会。这可能是和浏览器的种类有关。 (这是这种方式和其他方式的区别)
第三种方式
Response.Write("<script>window.open('')</script>");
这种方式就是新打开一个窗口,所以这个窗口有两种,一种是自己在服务器上新建一个web窗体,另一种是已经存在的网址(需要加上http:)
A:新建web窗体
Response.Write("<script>window.open('1.aspx')</script>");
B:已经存在的网址
Response.Write("<script>window.open('https://jwc.shzu.edu.cn/')</script>");
2、Response.Buffer
Response.Buffer = true;
表示开启缓冲区,即下面输入的内容全部存入到缓冲区中。
3、Response.Clear
Response.Clear();
表示将缓冲区里的内容清空。
4、Response.Flush
这个属性其实我不是很理解,因为我使用Response.Buffer开启缓冲区之后,就可以直接输出来,为什么还需要这个属性呢,我不理解。
然后,我就搜了一下解释:
在ASP.NET中,Response.Buffer默认是true,这意味着响应会被缓冲,直到缓冲区被填满或者响应完成之后才会被发送到客户端。而Response.Flush则可以手动强制将缓冲区的内容发送到客户端。
为什么还需要Response.Flush呢?因为有些情况下,我们希望立即将部分内容发送到客户端,而不必等到整个响应完成。例如,在服务器端生成大量内容的情况下,我们可能希望在生成部分内容之后就立即将其发送到客户端,以提高用户体验并减少等待时间。
有点难理解,先记住它是输出的就好了吧,慢慢来吧。
5、Response.ContentType
这个属性用来告诉浏览器输出的类型。常用的有以下几种:
6、Response.Redirect
这个实现页面重定向,与前面的Response.Write不同之处在于,这个是在服务器层面的跳转。而Response.Write是在客户端的跳转,容易被拦截(我前面测试的时候,那个窗口就被拦截了)。
Response.Redirect("1.aspx");
要注意,括号里面的是字符串。
可以从结果中看出,它是在本界面实现跳转。
7、Response.WriteFile
Response.WriteFile(FileName)
其中:FileName 指需向浏览器输出的文件名。
作用:直接将文件中的内容嵌入到页面中,下面是文件的内容(一般是用于.txt文件,这个文件要在项目文件夹下;如果不在该项目文件夹下,就需要指明路径)。
Response.WriteFile("a.txt");
然后,启动查看效果:
下面试试能打开图片吗:
显然,是一堆乱码,所以是不支持的。(但是我在课上尝试的时候,是会出来的,这个可能更浏览器版本或者是插件有关,要是有支持图片的插件的话,估计是可以显示的)。
ok,今天就到这吧。