编程论坛
注册
登录
编程论坛
→
ASP.NET技术论坛
asp.net如何传值呢,
zhengyingcan
发布于 2009-08-16 09:52, 1260 次点击
如何传值呢,在winform里面可以通过构造函数传值 ,可以吗,还有一个弱智的问题,打开某一个网页怎么写.
8 回复
#2
phansy
2009-08-16 18:09
传值方法很多。
比较普遍的方法是 Querystring
1、创建一个web form
2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2
3、为button按钮创建click事件
代码如下:
private void Button1_Click
(object sender, System.EventArgs e)
{
string url;
url="webform2.aspx?name=" +
TextBox1.Text + "&email=" +
TextBox2.Text;
Response.Redirect(url);
}
4、新建一个目标页面命名为webform2
5、在webform2中放置两个Label1,Label2
在webform2的Page_Load中添加如下代码:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];
}
运行,即可看到传递后的结果了。
这种方法可以在地址栏里面看到传送的内容,如果内容不重要的话这种方法再适合不过了。
或者使用session
这一般都是用来判断用户登入的。
1、创建一个web form
2、在新建的web form中放置一个button1,在放置两个TextBox1,TextBox2
3、为button按钮创建click事件
代码如下:
private void Button1_Click
(object sender, System.EventArgs e)
{
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Response.Redirect("webform2.aspx");
}
4、新建一个目标页面命名为webform2
5、在webform2中放置两个Label1,Label2
在webform2的Page_Load中添加如下代码:
private void Page_Load
(object sender, System.EventArgs e)
{
Label1.Text=Session["name"].ToString();
Label2.Text=Session["email"].ToString();
Session.Remove("name");
Session.Remove("email");
}
或者使用Server.Transfer 还有使用JS都可以传值
#3
ganmaoaq
2009-08-17 07:42
苍天之下,厚土之上,竟有如此奇人异士、文人墨客!讥讽于谈笑间,笑骂于无形中,层次之高,境界之深,非我等所能匹及,偶像啊!!!仿高人此文,照作一篇,以表仰慕之情。。。
#4
maxao
2009-08-17 09:22
传值,也就是状态管理
的状态管理分为四种:GET方式,POST方式,Session方式,ViewState方式,请查阅相关资料
#5
kanbokb2
2009-08-26 11:45
1楼房十分的详细
#6
fangyongp
2009-08-30 00:53
中.页面间的传值常见的有
Url
Session
Application
Cookie
各有各的优势与缺点。
你自己去查下。
还有实体类也可以传。但是用的时候不好处理。
#7
JianYongLan
2009-08-31 11:07
我是新手,想问
#8
fuzhiwei
2009-09-03 14:18
一. 使用QueryString变量
QueryString是一种非常简单也是使用比较多的一种传值方式,但是它将传递的值显示在浏览器的地址栏中,如果是传递一个或多个安全性要求不高或是结构简单的数值时,可以使用这个方法。
Response.Redirect( "target.aspx?param1=hello¶m2=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页面:
Code
1 <asp:Button ID="Button1" Runat="server" Text="PostToAnotherPage" PostBackUrl="~/Default2.aspx" />
2
default2.aspx页面:
Code
1 if (PreviousPage != null)
2 {
3 TextBox textBox1 = (TextBox)PreviousPage.FindControl("TextBox1");
4 Response.write(textBox1.Text );
5 }
六.使用Server.Transfer方法
这个才可以说是面象对象开发所使用的方法,其使用Server.Transfer方法把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流,所以这个方法是完全面象对象的,简洁有效。下面这个代码是展示在需要很多个参数的时候,使用的方法,如果参数比较少就没必要使用这个方法了.
如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用就是让结果页面获得构建结果时所需的参数,就可实现多页面共享一个结果页面操作!
1、先定义一个类,用该类放置所有查询参数:
Code
/**//// <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、接口定义:
Code
/**//// <summary >
/// 定义查询接口。
/// </summary >
public interface IQueryParams
{
/**//// <summary >
/// 参数
/// </summary >
QueryParams Parameters { get;}
}
3、查询页面继承IQueryParams接口(QueryPage.aspx):
QueryPage.aspx
Code
<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
Code
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: ");
#9
aganarRMJ
2009-09-10 17:14
QueryString、Session、Application和Server.Transfer各有优缺点,但是本人支持Server.Transfer。因为它就是java内的JavaBean
1