ASP.NET页面传值不使用QueryString

 

Asp.net中的页面传值方法:

1         Url传值

特点:主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址栏上的(不安全),同时又不能传递对象,

使用场景:传递的值少而安全性要求不高的情况下

传递:url="WebForm2.aspx?name=" + TextBox1.Text + "&email=" + TextBox2.Text;
接收:name=   Request.QueryString["name"];
        email=Request.QueryString["email"];

2         Session

特点:Session变量存放在服务器端,存储过多的数据会消耗比较多的服务器资源,可是使用清理动作来去除一些不需要的session,Session容易过期

使用场景:三个以上页面需要共用的变量

传递:Session["name"]=TextBox1.Text;

接收:  name=Session["email"].ToString();
清除: Session.Remove("name");
3         Cookie

特点:Cookie是存放在客户端的,需要要配合ASP.NET内置对象Request来使用

传递:HttpCookie cookie_name = new HttpCookie("name");
    cookie_name.Value = Label1.Text;
    Reponse.AppendCookie(cookie_name);
接收:name = Request.Cookie["name"].Value.ToString();

4         Application

特点:Application对象的作用范围是整个全局,对所有用户都有效。其常用的方法用Lock和UnLock

传递:Application["name"] = Label1.Text;
接收:    Application.Lock();
            name = Application["name"].ToString();
            Application.UnLock();

5         Response.Redirect()

传递:Response.Redirect( "target.aspx?param1=1111&param2=2222 ")
接收:   string   str   =   Request[ "param1 "]

6       Server.Transfer(子页面特点:地址栏中没有地址,鼠标右键属性中显示父页面的路径,保护子页面Url安全)

传递:Server.Transfer( "target.aspx?param1=1111&param2=2222 ")
接收:string   str   =   Request[ "param1 "]
接收:

a.aspx的C#代码

Parent Page

publicstring Name
{
get{ return Label1.Text;}
}
privatevoid Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("b.aspx");
}

b.aspx中C#代码

Children Page

privatevoid Page_Load(object sender, EventArgs e)
{
a newWeb= (a)Context.Handler;
string name;
name = newWeb.Name;
}

7 表单提交(可隐藏Url中的参数)

<form   action=   "target.aspx "   method   =   "post "   name   =   "form1 ">
  <input   name   =   "param1 "   value   =   "1111 "/>
  <input   name   =   "param2 "   value   =   "2222 "/>  
      </form>
      ....
      form1.submit();
      ....
      此种方在ASP。NET中无效,因为ASP。NET的表单总是提交到自身页面,如果要提交到别一页面,需要特殊处理。

8  @PreviousPageType (可隐藏Url中的参数)

这个指令是.net 2.0中的一个新指令,用于处理ASP.NET 2.0提供的跨页面传送新功能.用于批定跨页面的传送过程起始于哪个页面.包含两个属性:

TypeName:设置回送时的派生类名

VirtualPath:设置回送时所传送页面的地址.

如下示例:

源页面WebForm1.aspx中有一个TextBox,ID为txtName.在WebForm1.aspx.cs中设置一个属性:

public TextBox Name

{

get{return this.txtName;}//返回一个控件对象

}

在目标页面的设计文件中(WebForm2.aspx)的最上方加上:

<%@ PreviousPageType VirtualPath="~/Page1.aspx"%>,

然后就能引用WebForm1.aspx中定义的属性了.

在WebForm2.aspx.cs中可以有如下引用形式(假设WebForm2.aspx中有一个ID为lblName的Label):

lblName.Text="Hello"+PreviousPage.Name.Text+"<br />";

9     postbackUrl (可隐藏Url中的参数)

首先在asp.net中只有Button linkButton imgButton有postbackUrl属性可以用来跨页传递控件的值

<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="index.aspx" />

Index.aspx:

if(Page.PreviousPage!=null)

{

if(Page.PreviousPage.IsCrossPagePostBack)

{

TextBox textControl=this.PreviousPage.FindControl("TextBox1") as TextBox;

if(textControl.Text!=null)

{

this.Label1.Text = textControl.Text;

}

}

}

PreviousPage:代表传递值的页面

IsCrossPagePostBack:判断页面是不是跨页传值

FindControl:获得控件的值

ASP.NET页面传值不使用QueryString的更多相关文章

  1. ASP.NET页面传值与跳转

    asp.net页面传值的五种方法:QueryString,Session,Application,Request.Cookies,Server.Transfer 其中Cookie和Server.Tra ...

  2. ASP.NET页面传值的几种方式

    页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值. 存储对象传值.ajax.类.model.表单等!下面欧柏泰克和大家一起来看看asp.net页面传值方式一般有哪些?常用的较简单 ...

  3. ASP.Net页面传值比较

    ASP.Net页面传值比较   作为一个ASP.Net程序员,尤其是搞B/S开发的,对于不同页面之间变量值的传递用的非常广泛,而掌握不同方式之间的区别和特点也就很有必要.本文将针对这一知识点做一个简单 ...

  4. Asp.net 页面传值的方法

    ASP.NET页面传值的方法 From:Refresh-air 在面试的时候,经常会遇到这样的问题,其实我们会对其中的几种方法比较熟悉,因为项目中经常使用.但是要全面的回答ASP.NET中页面传值的方 ...

  5. ASP.NET页面传值的方法

    ASP.NET页面传值的方法 From:Refresh-air 在面试的时候,经常会遇到这样的问题,其实我们会对其中的几种方法比较熟悉,因为项目中经常使用.但是要全面的回答ASP.NET中页面传值的方 ...

  6. net面试 ASP.NET页面传值的各种方法和分析 (copy)

    Web页面是无状态的, 服务器对每一次请求都认为来自不同用户,因此,变量的状态在连续对同一页面的多次请求之间或在页面跳转时不会被保留.在用ASP.NET 设计开发一个Web系统时, 遇到一个重要的问题 ...

  7. C/S ASP.NET页面传值汇总

    一. QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中.如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法.但是对于传递数组或对象的话,就不 ...

  8. asp.net页面传值方法汇总

    1. Get(即使用QueryString显式传递)     方式:在url后面跟参数.     特点:简单.方便.     缺点:字符串长度最长为255个字符:数据泄漏在url中.     适用数据 ...

  9. ASP.NET页面传值之Server.Transfer 和Response.Direct

    先看实例: B.apsx:         public string TextBox1Text         {             get             {             ...

随机推荐

  1. mysql中Can't connect to MySQL server on 'localhost' (10061)

    Can't connect to MySQL server on 'localhost' (10061) 第一问题有两个解决方案: 1)没有启动sql服务,以下是具体步骤: 右键-计算机-管理-服务和 ...

  2. SSDB 数据库

    SSDB数据库 SSDB是一套基于LevelDB存储引擎的非关系型数据库(NOSQL),可用于取代Redis,更适合海量数据的存储. 另外,rocksdb是FB在LevelDB的二次开发版本,因此也存 ...

  3. Python 对象的引用计数和拷贝

    Python 对象的引用计数和拷贝 Python是一种面向对象的语言,包括变量.函数.类.模块等等一切皆对象. 在python中,每个对象有以下三个属性: 1.id,每个对象都有一个唯一的身份标识自己 ...

  4. 用C语言将搜狗输入法词库转换成QQ拼音输入法词库

    搜狗输入法词库格式: 'ni'kan'xia 你看下 'ni'kan'xia'gai'hou 你看下改后 'ni'kan'xing'ma 你看行吗 'ni'kan'zen'me'yang 你看怎么样 ...

  5. PHP访问MSSQL数据库(实例代码)

     本例子只作为简单的引导,实现一个简单的查询: <!DOCTYPE HTML> <html lang="en-US"> <head> <t ...

  6. jquery的load和get的区别

    jquery的load把返回的数据放到指定的元素中,不是全局函数:jquery的get把返回的数据交给用户处理,是全局函数. load和get同样是jquery的ajax函数,load的实现,几乎等于 ...

  7. Cornerstone详细操作

    1.⾸首先打开Cornerstone 2.然后如下图所⽰示: 3.选择对应的仓库,如下图所⽰示   4.然后Import完成之后,就把本地的⽂文件提交到SVN服务器上了,如下图所⽰示,另外如果你想要使 ...

  8. 代码中access 的使用

     C++代码:if(access(strZip.c_str(), 0) == 0){...}    此处为判断strZip中文件是否存在   .c_str() 是他自身字符串名称,该名称是一个压缩文件 ...

  9. 淘宝首页源码藏美女彩蛋(下)(UED新作2013egg)

    我们已经知道,执行美女会得到"彩蛋",而正是彩蛋做到了taobaoUED展现给大家的神奇的前端魅力.今天我们来看看FP.egg&&FP.egg("%cjo ...

  10. MainData仿Backbone Model式 数据模型记录器

    MainData仿Backbone Model式 数据模型记录器主要思想:将 数据记录处理 和 因为数据变化而产生的页面渲染 两者解耦, 让页面元素可以与数据进行关联绑定,杜绝因为遗忘或是逻辑复杂导致 ...