A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 赵刘滨 中级黑马   /  2012-8-7 12:51  /  2290 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

ASP.Net中的页面传值有几种?分别有什么区别?(麻烦说明白点)

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
本帖最后由 许庭洲 于 2012-8-7 13:14 编辑

同一页面.aspx与.aspx.cs之间参数传递
      1,aspx.cs接收.aspx的参数:由于.aspx和.aspx.cs为继承关系,所以.aspx.cs可以直接对.aspx中的ID进行值提取,具体语句为string b = a.text; 其中a为.aspx中的文本框的ID;
      2,aspx接收.aspx.cs的变量:将.aspx.cs的变量设为全局变量,在.aspx中直接引用<%=a %>,这里a为.aspx.cs中声明的全局变量;

不同页面之间的参数传递
      1,URL传递参数方法,有两种方法:
      第一种:
             send.aspx
             <a href=receive.aspx?a=b></a>
              
              receive.aspx.cs
              string c = Request.QueryString["a"];

      第二种:
             send.aspx.cs:
              protected void Button1_Click(object sender, EventArgs e)
             {
                  Request.Redirect("receive.aspx?a=b");
             }
            
             receive.aspx.cs:
             string username = Request.QueryString["username"];

    2. Form表单POST方法
             send.aspx
             <form id="form1" runat="server" action="receive.aspx" method=post>
                     <div>
                            <asp:Button ID="Button1" runat="server" Text="Button" />
                            <asp:TextBox ID="a" runat="server"></asp:TextBox>
                     </div>
             </form>

            receive.aspx.cs
            string b = Ruquest.Form["a"];

    3.通过session方法传递参数
             send.aspx.cs:
             protected void Button1_Click(object sender, EventArgs e)
            {
                    Session["username"] = "a";
                    Request.Redirect("receive.aspx");
             }

             receive.aspx:
             string username = Session["username"];

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
许庭洲 发表于 2012-8-7 13:12
同一页面.aspx与.aspx.cs之间参数传递
      1,aspx.cs接收.aspx的参数:由于.aspx和.aspx.cs为继承关系, ...

多谢了,正好解决了我现在遇到了问题。
回复 使用道具 举报

使用QueryString、Application对象 、Session、Cookie对象变量 ,Serv...

本帖最后由 梁永斌 于 2012-8-7 13:54 编辑


1. 使用QueryString变量

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

  a.aspx的代码 -->要传值的页面

  private void Button1_Click(object sender, System.EventArgs e)

  {

  string s_url;

  s_url = "b.aspx?name=" + Label1.Text; //传值

  Response.Redirect(s_url); //跳转到接收传值的页面

  }  

  b.aspx中-->接收传值的页面

  private void Page_Load(object sender, EventArgs e)

  {

  Label2.Text = Request.QueryString["name"];

  }  

 2. 使用Application 对象变量

    Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock-->锁/开。

        还有使用可以使用它来实现在线人数的统计

  a.aspx的C#代码

  private void Button1_Click(object sender, System.EventArgs e)

  {

  Application["name"] = Label1.Text;

  Server.Transfer("b.aspx");

  }

  b.aspx中C#代码

  private void Page_Load(object sender, EventArgs e)

  {

  string name;

  Application.Lock();

  name = Application["name"].ToString();

  Application.UnLock();

  }

 3. 使用Session变量 -->作用于用户个人。

  a.aspx的C#代码

  private void Button1_Click(object sender, System.EventArgs e)

  {

  Session["name"] = Label.Text;

  }

  b.aspx中C#代码

  private void Page_Load(object sender, EventArgs e)

  {

  string name;

  name = Session["name"].ToString();

  }

4. 使用Cookie对象变量 Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合ASP.NET内置对象Request来使用。

  a.aspx的C#代码

  private void Button1_Click(object sender, System.EventArgs e)

  {

  HttpCookie cookie_name = new HttpCookie("name");

  cookie_name.Value = Label1.Text;

  Reponse.AppendCookie(cookie_name);

  Server.Transfer("b.aspx");

  }

  b.aspx中C#代码

  private void Page_Load(object sender, EventArgs e)

  {

  string name;

  name = Request.Cookie["name"].Value.ToString();

  }

 5. 使用Server.Transfer方法

    这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。

  a.aspx的C#代码

  public string Name

  {

  get{ return Label1.Text;}

  }

  private void Button1_Click(object sender, System.EventArgs e)

  {

  Server.Transfer("b.aspx");

  }

  b.aspx中C#代码

  private void Page_Load(object sender, EventArgs e)

  {

  a newWeb; //实例a窗体

  newWeb = (source)Context.Handler;

  string name;

  name = newWeb.Name;

  }

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马