AD:
ASP.NET跨页面传值:使用QueryString变量
QueryString是一种非常简单的传值方式,他可以将传送的值显示在浏览器的地址栏中。如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。但是对于传递数组或对象的话,就不能用这个方法了。下面是一个例子:
a.aspx的C#代码
- 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中C#代码
- private void Page_Load(object sender, EventArgs e)
- {
- Label2.Text = Request.QueryString["name"];
- }
ASP.NET跨页面传值:使用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();
- }
ASP.NET跨页面传值:使用Session变量
想必这个肯定是大家使用中最常见的用法了,其操作与Application类似,作用于用户个人,所以,过量的存储会导致服务器内存资源的耗尽。
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();
- }
ASP.NET跨页面传值:使用Cookie对象变量
这个也是大家常使用的方法,与Session一样,其是什对每一个用户而言的,但是有个本质的区别,即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();
- }
ASP.NET跨页面传值:使用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;
- }
以上就是本人在实践过程中总结的asp.net跨页面传值的技巧。
绑定的时候,我们肯定是引用<%@ Import namespace=""System.Data"" %>后使用<%# ((DataRowView)Container.DataItem)[""xxxx""]%> 绑定的方法
先不考虑性能具体如何,但一些常见的应用,其实完全可以在数据绑定的时候就实现到我们所想要的效果
1,特殊值的绑定
很多时候,我们不能直接把从数据库中的查询出来的值绑定显示在页面上,比如金额达到3000元以上的订单,会显示为""大单"",3000元以下单据显示为""小单"".这个时候,我们可以通过在数据库查询的时候,在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 style=""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种实际中的应用,但归根到最后,都是使用了 <% %> 来调用了服务器端代码 运用 <%# %> 将值绑定到我们所想要控制的地方去.虽然在性能上我没有做过测试,但至少在编码的方便程度上,我个人觉得还是可取的.