关于页面传值的方法,引发了很多讨论。本文总结了asp页面传值的技巧
AD
ASP.NET页面传值:使用QueryString
QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子
a.aspxC#
1. private void Button1_Click(object sender, System.EventArgs e) 
2.
3.     string s_url; 
4.     s_url = "b.aspx?name=" + Label1.Text; 
5.     Response.Redirect(s_url); 
6.
7.
b.aspxC#
1. private void Page_Load(object sender, EventArgs e) 
2.
3.     Label2.Text = Request.QueryString["name"]; 
4.
ASP.NET页面传值:使用Application
Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用LockUnLock
a.aspxC#
1. private void Button1_Click(object sender, System.EventArgs e) 
2.
3.     Application["name"] = Label1.Text; 
4.     Server.Transfer("b.aspx"); 
5.
6.
b.aspxC#
1. private void Page_Load(object sender, EventArgs e) 
2.
3.     string name; 
4.     Application.Lock(); 
5.     name = Application["name"].ToString(); 
6.     Application.UnLock(); 
7.
8.
ASP.NET页面传值:使用Session
想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽
a.aspxC#
1. private void Button1_Click(object sender, System.EventArgs e) 
2.
3.     Session["name"] = Label.Text; 
4.
5.
b.aspxC#
1. private void Page_Load(object sender, EventArgs e) 
2.
3.     string name; 
4.     name = Session["name"].ToString(); 
5.
6.
ASP.NET页面传值:使用Cookie对象变
这个也是大家常使用的方法,与Session样,其是什对每一个用户而言的,但是有个本质的区别,即Cookie是存放在客户端的,而session是存放在服务器端的。而且Cookie的使用要配合asp内置对象Request来使用
a.aspxC#
1. private void Button1_Click(object sender, System.EventArgs e) 
2.
3.     HttpCookie cookie_name = new HttpCookie("name"); 
4.     cookie_name.Value = Label1.Text; 
5.     Reponse.AppendCookie(cookie_name); 
6.     Server.Transfer("b.aspx"); 
7.
8.
b.aspxC#
1. private void Page_Load(object sender, EventArgs e) 
2.
3.     string name; 
4.     name = Request.Cookie["name"].Value.ToString(); 
5.
6.
ASP.NET页面传值:使用Server.Transfer
这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对
象的,简洁有效
a.aspxC#
1. public string Name 
2.
3.     get{ return Label1.Text;} 
4.
5. private void Button1_Click(object sender, System.EventArgs e) 
6.
7.     Server.Transfer("b.aspx"); 
8. }
b.aspxC#
1. private void Page_Load(object sender, EventArgs e) 
2.
3.     a newWeb;  //实例a窗体 
4.     newWeb = (source)Context.Handler; 
5.     string name; 
6.     name = newWeb.Name; 
7.
以上就是本人在实践过程中总结的asp页面传值的技巧
gridview绑定技
想必大家在初接触gridview绑定的时候,肯定会经常用到RowDataBound这个事件吧,这个事件是在gridview的行数据被填充的时候被触发,这个事件中可以对刚刚被填充的行中的
控件进行更多的处理.
绑定的时候,们肯定是引用<%@ Import namespace=""System.Data"" %>后使用<%# ((DataRowView)Container.DataItem)[""xxxx""]%> 绑定的方
先不考虑性能具体如何,但一些常见的应用,实完全可以在数据绑定的时候就实现到我们所想要的效
1,特殊值的绑
很多时候,们不能直接把从数据库中的查询出来的值绑定显示在页面上,比如金额达到3000元以上的订单,显示为"""",3000元以下 显示为""gridview不显示"".这个时候,们可以通过在数据库查询的时候,SQL语句中进行判断,但也同样可以在绑定过程中进行判断.

<%# int.Parse(((DataRowView)Container.DataItem)[""Money""].ToString())>3000?"""":"""" %>

这样,就直接在数据进行绑定的时候,直接讲显示改为"""",""""显示方式了

2,控制控件的显示或隐
控制控件的显示或隐藏,也是在绑定的时候经常遇见的一种情况.样也可以在绑定的时候实现,列入,在金额大于3000时候,显示按钮,则隐藏按钮
 
<asp:Button ID=""Button2"" Visible='<%# int.Parse(((DataRowView)Container.DataItem)[""Money""].ToString())>3000 %>' runat=""server"" Text=""Button"" />

3,控制字体
更具条件的不同,让字体显示出不同的颜,这也是在绑定的时候可以实现的功能,列入:在金额大于3000时候,""查看单据""变为红,则为黑

<div color:<%# int.Parse(((DataRowView)Container.DataItem)[""Money""].ToString
())>3000?""#ff0000"":""#000000"" %>;"">
        查看单据
    </div>

4,绑定JS
很多时候我们可以用JS实现出很多特效,但是在gridview绑定中,即使用模板列,也不能直接指定出不同的ID,还是一样可以用数据绑定的时候做到.们在填充数据的时候,将数据的唯一ID查询出来,然后也填充进控件之中.那么,ID的不同就变得简单了

<div id=""div_<%# ((DataRowView)Container.DataItem)[""ID""]%>""></div>

这样,每行的div都会有个一个不同的id,你就能在JS中到指定的JS,样的方法也能绑定JS的方法调用.
绍了这么4实际中的应用,归根到最后,都是使用了 <% %> 调用了服务器端代码
<%# %> 值绑定到我们所想要控制的地方去.虽然在性能上我没有做过测试,但至少在编码的方便程度上,我个人觉得还是可取的.
一:页面间通过JS传值的形式大概有三种
 
1 window.opener传值,页面能获取父页面的窗口对象。当然就能获取到对象的值了,这种方式不存在传值  长度限制,不能跨域。
子页面给 父页面赋值:
1.window.parent.ElementById("ContentPlaceHolder2_HiddenField1").value = lls[2].innerText + ';' + lls[3].innerText + ';' + lls[4].innerText + ';' + lls[5].innerText + ';' + lls[6].innerText;        //给一个控件传递多个值
2.window.parent.ElementById("ContentPlaceHolder2_lblPatternBind").innerText = lls[2].innerText;            //给label控件赋值
3.window.parent.ElementById("ContentPlaceHolder2_FormView1_gdv_DropDownList1").options[window.parent.ElementById("ContentPlaceHolder2_FormView1_gdv_DropDownList1").selectedIndex].innerText = lls[3].innerText;  //给dropdownlist控件赋值

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