ASP.NET页面传值的方法

From:Refresh-air

在面试的时候,经常会遇到这样的问题,其实我们会对其中的几种方法比较熟悉,因为项目中经常使用。但是要全面的回答ASP.NET中页面传值的方式,估计往往很难全面。
一. 使用QueryString变量
    QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。

Response.Redirect( "target.aspx?param1=hello&param2=hi ") 
        接收页面:   string   str   =   Request.QueryString["param1"]; 
                               string   str1   =  Request.QueryString["param2];
二.使用Cookie对象变量(Cookie是存放在客户端的)
       设置Cookie:   HttpCookie cookie_name = new HttpCookie("name");
                         cookie_name.Value = Label1.Text;
                         Reponse.AppendCookie(cookie_name);
    
          获取Cookie:
                       string name= Request.Cookie["name"].Value.ToString();
 
三. 使用Session变量(session是存放在服务器端的)
  设置Session:      Session["name"] ="hello";
        获取Session:        string name = Session["name"].ToString();
四.使用Application 对象变量
  Application对象的作用范围是整个全局,也就是说对所有用户都有效。此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。 
        设置Application :    Application["name"] = ="hello";
        获取Application :     string   name = Application["name"].ToString();
五. PostBackUrl()方法
     default.aspx页面:


1 <asp:Button ID="Button1" Runat="server" Text="PostToAnotherPage" PostBackUrl="~/Default2.aspx" />
2

default2.aspx页面:


1 if (PreviousPage != null)
2        {
3            TextBox textBox1 = (TextBox)PreviousPage.FindControl("TextBox1");
4           Response.write(textBox1.Text );
5        }

六.使用Server.Transfer方法
    这个才可以说是 面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方 法是完全面象对象的,简洁有效。下面这个代码是展示在需要很多个参数的时候,使用的方法,如果参数比较少就没必要使用这个方法了.
如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用就是让结果页面获得构建结果时所需的参数,就可实现多页面共享一个结果页面操作!

1、先定义一个类,用该类放置所有查询参数:


/// <summary>
/// QueryParams 的摘要说明
/// </summary>
public class QueryParams

  private   string   firstName; 
        private   string   lastname;
        private   int    age;
      

         public string Firstname 
        {
            get { return this.firstname; }
            set { this.firstname = value; } 
        } 
        public string LastName 
        {
            get { return this.lastname; }
            set { this.lastname = value; } 
        }
        public string Age
        {
            get { return this.age; }
            set { this.age = value; }
        } 
 
}

2、接口定义:


///   <summary > 
    ///   定义查询接口。 
    ///   </summary > 
    public interface IQueryParams
    {
        ///   <summary > 
        ///   参数 
        ///   </summary > 
        QueryParams Parameters { get;}
    } 

3、查询页面继承IQueryParams接口(QueryPage.aspx):
QueryPage.aspx


<form id="form1" runat="server">
    <div>
        <asp:TextBox ID="txtFirstName" runat="server"></asp:TextBox>
        <asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
         <asp:TextBox ID="txtAge" runat="server"></asp:TextBox>
        <asp:Button ID="btnEnter" runat="server" Text="Button" OnClick="btnEnter_Click" /></div>
    </form>


QueryPage.aspx.cs


public partial class QueryPage : System.Web.UI.Page, IQueryParams 
{
    private QueryParams queryParams;
   
        public   QueryParams   Parameters 
        { 
            get 
            { 
                 return   queryParams; 
            } 
        } 
       
        public   void   btnEnter_Click(object   sender,   System.EventArgs   e) 
        { 
            //赋值 
            queryParams   =   new   QueryParams();
            queryParams.FirstnName = this.txtFirstName.Text;
            queryParams.Lastname = this.txtLastName.Text;
            queryParams.Age = this.txtAge.Text;
            Server.Transfer( "ResultPage.aspx "); 
        }

    protected void Page_Load(object sender, EventArgs e)
    {  }
}
4、接收页面(ResultPage.aspx):
ResultPage.aspx.cs
public partial class ResultPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        QueryParams queryParams = new QueryParams();
        IQueryParams queryInterface;
        //实现该接口的页面 
        if (Context.Handler is IQueryParams)
        {
            queryInterface = (IQueryParams)Context.Handler;
            queryParams = queryInterface.Parameters;
        }

        Response.Write("FirstName: ");
        Response.Write(queryParams.FirstName);
        Response.Write(" <br/ >Lastname: ");
        Response.Write(queryParams.LastName); 
        Response.Write(" <br/ >Age: ");
        Response.Write(queryParams.Age); 

    }
}

Asp.net 页面传值的方法的更多相关文章

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

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

  2. Asp.Net页面传值的方法简单总结【原创】

    1.QueryString 当页面上form按照get的方式向页面发送请求数据的时候,web server会将请求数据放入 一个QEURY_STRING的环境变量中,然后通过QeueryString方 ...

  3. ASP.NET页面传值不使用QueryString

    ASP.NET页面传值不使用QueryString   Asp.net中的页面传值方法: 1         Url传值 特点:主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在浏览器的地址 ...

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

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

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

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

  6. ASP.Net页面传值比较

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

  7. Struts2中在Action里面向前端页面传值的方法总结

    由于在Action中并不能直接诶访问Servlet API,但它提供了相关类ActionContext来访问HttpServletRequest.HttpSession和ServletContext, ...

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

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

  9. webform 页面传值的方法总结

    ASP.NET页面之间传递值的几种方式   页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有Quer ...

随机推荐

  1. ggplot2作图详解7(完):主题(theme)设置

    凡是和数据无关的图形设置内容理论上都可以归为主题类,但考虑到一些内容(如坐标轴)的特殊性,可以允许例外的情况.主题的设置相当繁琐,很容易就占用了 大量的作图时间,应尽量把这些东西简化,把注意力主要放在 ...

  2. R语言笔记-set.seed()函数

    今天查了一下R语言中set.seed(),该命令的作用是设定生成随机数的种子,种子是为了让结果具有重复性.如果不设定种子,生成的随机数无法重现. set.seed()用于设定随机数种子,一个特定的种子 ...

  3. Iterator(迭代器)

    意图: 提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示. 适用性: 访问一个聚合对象的内容而无需暴露它的内部表示. 支持对聚合对象的多种遍历. 为遍历不同的聚合结构提供一个 ...

  4. Java网络编程学习A轮_04_TCP连接异常

    参考资料: https://huoding.com/2016/01/19/488 示例代码: https://github.com/gordonklg/study,socket module A. C ...

  5. Jenkins+Sonar集成对代码进行持续检测

    介绍 SonarQube(曾用名Sonar(声纳)[1])是一个开源的代码质量管理系统. 特征 支持超过25种编程语言[2]:Java.C/C++.C#.PHP.Flex.Groovy.JavaScr ...

  6. Tornado源码分析 --- Cookie和XSRF机制

    Cookie和Session的理解: 具体Cookie的介绍,可以参考:HTTP Cookie详解 可以先查看之前的一篇文章:Tornado的Cookie过期问题 XSRF跨域请求伪造(Cross-S ...

  7. C#属性升级版--自动属性-chapter 3 P34-36

    使用C#属性,能够通过将数据与它的设置和检索方法分离的方式公开类中的一段数据.   例如:   namespace LanguageFeatures { public class Product { ...

  8. poj 2029 Get Many Persimmon Trees 各种解法都有,其实就是瞎搞不算吧是dp

    连接:http://poj.org/problem?id=2029 题意:给你一个map,然后在上面种树,问你h*w的矩形上最多有几棵树~这题直接搜就可以.不能算是DP 用树状数组也可作. #incl ...

  9. 利用Sonar定制自定义JS扫描规则(一)——sonar环境搭建

    接触sonar已经有段时间了,最早是在一个项目组里面听到这个框架,后来在公司持续集成活动的推动下,也逐渐学习了sonar的具体功能.sonar集成了findbugs,pmd,checkstyle各种静 ...

  10. secureCRT连不上虚拟机上的ubuntu

    前些日子我的secureCRT一直连不上虚拟机上的ubuntu,虽然两边的IP都能ping通! 都怪我当初连ssh都没装就在那瞎弄,执行以下第二步即可连接上了. 如何使用SecureCRT连接ubun ...