ASP.Net与ASP.NetCore中页⾯传值的⼏种形式和⽅法简介
在开发ASP.NET 以及ASP.NET Core过程中主要使⽤的页⾯传值的⽅法有以下⼏种:
Request.QueryString[]    Request.Form[]      Session,
Cookie    Cache  Application,    Server.Transfer
Database    HttpContext的Item属性    Files  DataBase等
1、Request.QueryString
代码如下:
protected void getQueryString_Click(object sender, EventArgs e)
{
string QueStr = Request.QueryString["name"];
Response.Write(QueStr);
}
分析:Request.QueryString 获取http查询字符床变量集合。有两重载即Request.QueryString[string name]和Request.QueryString[int index]两种
其中Request.QueryString主要获取url中的“?”之后的参数,例如url: a.aspx?name="nueq",则 Reuqest.QueryString["name"]的值为“neuq”。
2、Request.Form
代码如下:
protected void getQueryString_Click(object sender, EventArgs e)
{
string strQueForm = Request.Form["TextBox1"];
Response.Write(strQueForm);
}
分析:
Request.Form获取窗体变量集合有两重载(⼀般Form表单post提交⾄后台的数据)。即Request.Form[string name] 和Request.Form[int index],获取表单指定名称的参数值。
session和application的区别3、Session基本操作
a、创建session,代码如下:
public void createSession(string[] arrStr)
{
//创建数组
string[] str=new string[arrStr.Length];
for (int i = 0; i < arrStr.Length; i++)
{
str[i] = i.ToString();
Session[str[i]] = arrStr[i];
}
}
b、获取session中的数据,代码如下:
string getSessionValue=Session["name"].ToString();
c、遍历Session中的数据,代码如下:
public void getSession()
{
IEnumerator sessionEnum =Session.Keys.GetEnumerator();
While(sessionEnum.MoveNext)
{
Response.Write(Session[sessionEnum.Current.ToString()].ToString()+",");
}
}
d、清空Session数据但是不会结束会话。代码如下:
Session.Clear();
e、结束会话,代码如下:
Session.Abandon();
注:Session的数据存放形式及位置:
<system.web>
<sessionState mode="Off|InProc|StateServer|SQLServer"  cookieless="true|false"  timeout="number of minutes"
stateConnectionString="tcpip=server:port"  sqlConnectionString="sql connection string"  stateNetworkTimeout="number of seconds"/>
</system.web>
注解:
mode:表⽰设置存储Session形式和位置;
a、Off:禁⽤Session;
b、Inproc:In Process缩写,表⽰将Session存储在IIS进程内,但注意,该种⽅式虽然性能⾼,但IIS重启是,丢失Session信息;(默认值)
c、SateServer:将Session存储在ASP.NET状态服务进程中(重新启动Web运⽤程序时保留会话状态,并使会话状态可以⽤于⽹络中的多个Web服务器);
d、将Session存储在SQL Server中
cookieless:设置客户端存储Session形式和位置
a、true:使⽤cookieless模式,这时客户端的Session信息就不再使⽤Cookie存储了,⽽是将其通过URL存储;
b、false:使⽤kookie模式,默认值。
timeout 设置经过多少分钟后服务器⾃动放弃Session信息。默认为20分钟;
stateConnectionString 设置将Session信息存储在状态服务中时使⽤的服务器名称和端⼝号,例如:"tcpip=127.0.0.1:42424”。当mode的值是StateServer是,这个属性是必需的。(默认端⼝42424); sqlConnectionString 设置与SQL Server连接时的连接字符串。例如"data source=localhost;Integrated Security=SSPI;Initial Catalog=joye"。当mode的值是SQLServer时,这个属性是必需的; stateNetworkTimeout 设置当使⽤StateServer模式存储Session状态时,经过多少秒空闲后,断开Web服务器与存储状态信息的服务器的TCP/IP连接的。默认值是10秒钟;
4、Application
⽰例代码如下:
//a.aspx
////
private void Button1_Click(object sender, System.EventArgs e)
{
  Application["name"] = Label1.Text;
}
////b.aspx
private void Page_Load(object sender, EventArgs e)
{
  string name;
  Application.Lock();
  name = Application["name"].ToString();
  Application.UnLock();
}
总结:
1、Application对象的作⽤范围是整个全局,也就是说对所有⽤户都有效。它在整个应⽤程序⽣命周期中都是有效的,类似于使⽤全局变量⼀样,所以可以在不同页⾯中
对它进⾏存取。它和Session变量的区别在于,前者是所有的⽤户共⽤的全局变量,后者是各个⽤户独有的全局变量。可能有⼈会问,既然所有⽤户都可以使⽤application
变量,那他可以⽤在什么场合呢?这⾥举个例⼦:⽹站访问数。多个请求访问时都可以对它进⾏操作。
2、优点:使⽤简单,消耗较少的服务器资源;不仅能传递简单数据,还能传递对象;数据量⼤⼩是不限制的。
3、缺点:作为全局变量容易被误操作。所以单个⽤户使⽤的变量⼀般不能⽤application。
4、在源页⾯的代码中创建你需要传递的名称和值构造Application变量:Application["name"]="Value(Or Object)";在⽬的页⾯的代码使⽤Application变量取出传递的值。Result = Application["name"]。
5、常⽤lock和unlock⽅法⽤来锁定和解锁,为了防⽌并发修改。
5、Cache
代码如下:
//Class1
Cache["id"] = TextBox1.Text;
Response.Redirect("~/WebForm1.aspx");
//Class2
if (Cache["id"]!=null)
{
Label1.Text = Cache["id"].ToString();
}
/
/移除缓存
Cache.Remove("id");
//如果 Cache["id"]为空,则传值失败。可使⽤如下⽅法实
//限期为10分钟
Cache.Insert("id",TextBox1.Text,null,Cache.NoAbsoluteExpiration,new TimeSpan(0,10,0));
总结如下:
1、应⽤程序中的缓存机制⽤于将需要⼤量服务器资源来创建的对象存储在内存中,以此⼤⼤改进应⽤程序的性能。这个机制同样可以⽤来传值。
2、与其他⽅法不同的是,该⽅法需要设置缓存项优先级和缓存时间。因为当系统内存缺乏时,缓存机制会⾃动移除很少使⽤或优先级较低的项,从⽽造成传值失败。
3、该⽅法的优点是传递数据的⼤⼩和数量⽆限制,速度快。缺点是缓存机制的操作相对⽐较复杂。
6、Cookie
//Class1
HttpCookie httpCookie = new HttpCookie("testCookie","Page transfers by Cookie");
Response.Redirect("~/Class2.aspx");
//Class2
Label1.Text = Request.Cookies["testCookie"].Value;
总结:
1、Cookie⽤于在⽤户浏览器上存储⼩块的信息,保存⽤户的相关信息,⽐如⽤户访问某⽹站时⽤户的ID,⽤户的偏好等,⽤户下次访问就可以通过检索
获得以前的信息。所以Cookie也可以在页⾯间传递值。
2、Cookie通过HTTP头在浏览器和服务器之间来回传递的。Cookie只能包含字符串的值,如果想在Cookie存储整数值,那么需要先转换为字符串的形式。
3、与Session⼀样,其是什对每⼀个⽤户⽽⾔的,但是有个本质的区别,即Cookie是存放在客户端的,
⽽session是存放在服务器端的。⽽且Cookie的使
⽤要配合ASP.NET内置对象Request来使⽤。
4、使⽤简单,是保持⽤户状态的⼀种⾮常常⽤的⽅法。⽐如在购物⽹站中⽤户跨多个页⾯表单时可以⽤它来保持⽤户状态。
5、常常被⼈认为⽤来收集⽤户隐私⽽遭到批评。
6、安全性不⾼,容易伪造。
7、 Context.Items["id"]
Contextu对象包含与当前页⾯相关的信息,提供对整个上下⽂的访问、包括请求、响应、以及上下⽂中的信息;
可以使⽤此对象在⽹页之间共享信息,从⽽实现页⾯之间的传值;
与使⽤Form的⽅法类似,该⽅法也能保持⼤量的数据,缺点也相同,但是使⽤⽅法相对⽐较简单;
8、ViewState
⽰例代码:
ViewState["id"]="hello nueq" //数据保存
Label1.Text=ViewState["id"].ToString();//数据取出
ViewState.Remove("id");//删除数据
9、web.Config 和 machine.Config
核⼼代码:
//Class1
using System.Web.Configuration;
WebConfigurationManager.AppSettings.Set("userName",TextBox1.Text);
Response.Redirect("~/Class2.aspx");
//Class2
using System.Web.Configuration;
Label1.Text = WebConfigurationManager.AppSettings["userName"];
总结:
1、每个Web运⽤程序继承fig⽂件和fig⽂件的设置。
2、fig和fig这两种⽂件保存数据⼀般都很⼩,多为明⽂,特别适合保存⼀些字符串常量,如数据库连接信息。此外,fig⽂件是可以
扩展的,因此,也可以⽤来传递变量。由于这两种⽂件会被⾃动缓存,所以不存在因磁盘IO产⽣的性能瓶颈等问题。要注意的是⽂件中某些设置会导致⽂件被修改后
Web运⽤程序的重启。
3、fig:你可以向单个Web运⽤程序运⽤设置。例如,你可能会希望设置特定的验证⽅法、调试的类型、默认语⾔或⾃定义的错误页⾯。但如果你要使⽤这些
设置,必须把fig⽂件放到web运⽤程序的根虚拟⽬录下。要想在Web运⽤程序中进⼀步配置⾃⼰的⼦⽬录,需要在这些⽂件夹中放置附加的fig。
(关于ASP.fig⽂件详细介绍,可参考我另外⼀篇博客:ASP.fig)
4、fig:从c:\Windows\Microsoft.NET\Framework\Framework\[Version]\Config⽬录中的⼀个叫fig的⽂件开始配置。fig
⽂件定义⽀持的配置⽂件节,配置ASP.NET⼯作者进程,注册可⽤于⾼级特性(如配置⽂件、成员资格以及基于⾓⾊的安全等)提供程序。(关于ASP.fig

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。