ASP.NET的入门级问题 ( 积分: 30 )

  • 主题发起人 主题发起人 luckysw
  • 开始时间 开始时间
L

luckysw

Unregistered / Unconfirmed
GUEST, unregistred user!
我用C#.NET写ASP.NET的程序:
现在有两个WebForm: WebForm1,WebForm2. WebForm1中几个按钮, WebForm2中有一个label.
我想通过点击WebForm1中的某个按钮, 在新的窗口中打开WebForm2, 并且根据点击按钮的不同, WebForm2中的label的text也不同.
请问大家, 怎么实现?
 
我用C#.NET写ASP.NET的程序:
现在有两个WebForm: WebForm1,WebForm2. WebForm1中几个按钮, WebForm2中有一个label.
我想通过点击WebForm1中的某个按钮, 在新的窗口中打开WebForm2, 并且根据点击按钮的不同, WebForm2中的label的text也不同.
请问大家, 怎么实现?
 
用javascript就可以实现!
 
谢谢luyyu202,
可是用javascript没法实现对WebForm2中的label的text的动态设置吧?
 
在asp.net的Web表单间传值
http://www.coderpub.com/View.aspx?fbId=1&Id=31
---------------------------------------
              欢迎访问 http://www.coderpub.com 技术论坛
 
打不开呀,谁给说个简单点的,顶一下
 
同意 seabird_2000 的方法。
也可以使用 Session 的方法
 
查询字符串给新的页面
 
javascript 打开模态窗口,将值回传就行了
 
基本上只能用 javascript 打开模态窗口,传过去,然后再在另外一个界面的Request中接收给它界面上的Label赋值了。
Web编程巨麻烦,罗嗦,复杂,语法混乱。
 
//######################## webform2:
{
string strSocut=Request["Socut"];//定义strSocut串,并且等于其Request传递值
if(strSocut=="1")
{
Label1.Text="第一个按钮的内容";
}
else
{
Label1.Text="第二个按钮的内容";
}
}
 
seabird_2000 提供的方法,你是不是看不到
使用session变量
这是另一种在页面间传值的办法。利用这个办法,可以将要传送的值保存到session变量,然后在另一个Web表单中进行存取。然而,需要知道的是,将太多的数据保存到session变量会给服务器带来额外的负担。所以,应该谨慎地使用这种方法。此外,采用这种方法可能需要在程序中以人工方式来清除不需要的session变量。典型的用法如下:
创建Web表单,包括必要的控件
在表单中放置可将表单post到服务器的button或linkbutton控件
在button的事件处理程序里设置session变量,将要传送的值放入其中
使用Response.Redirect导航到目的表单
在目的表单存取session变量,如必要并进行清除
以下是代码片段:
源表单
--------------------------------------------------------------
private void Button1_Click(object sender, System.EventArgs e)
{
//textbox1 and textbox2 are webform controls
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Response.Redirect("anotherwebform.aspx");
}
目的表单
--------------------------------------------------------------
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");
}
 
//######################## webform1:
private string str ;
button1_Click(...)
{
str = "1"
;
Response.Redirect("WebForm2.apsx?str="
+ str) ;
}
button2_Click(...)
{
str = "2"
;
Response.Redirect("WebForm2.apsx?str="
+ str) ;
}
//######################## webform2:
{
string strSocut=Request.QueryString["str"];//定义str串,并且等于其Request传递值
if(strSocut=="1")
{
Label1.Text="第一个按钮的内容";
}
else
{
Label1.Text="第二个按钮的内容";
}
}
 
打不开吗?转贴如下:
在asp.net的Web表单间传值
////////////////////////////////////////
介绍
Asp.net的Web表单为开发人员提供了极佳的事件驱动编程模型,简化了应用程序的开发设计,但同时也带来了一些问题。例如,在传统ASP编程中可以很容易地将数据用POST方法传送到另一个ASP页面去处理。但要想在Asp.net的Web表单模型中完成同样的事情却不可能。然而,可以采用其它的一些方法来做到。本文列举了几个办法,具体来说,这些方法包括:querystring,session和Server.Transfer。
使用Querystring
Querystring是页面间传值的老办法。主要的好处就是使用起来非常简单,缺点则是传送的值可以在浏览器的地址栏里看到,而且也不能传送对象。当只需传送少量值并且没有安全性要求时,这个办法尤其适合。要使用这个办法需遵循下列步骤:
创建表单,包括必要的控件
在表单中放置可将表单post到服务器的button或linkbutton控件
在button的click事件处理程序里创建包含了指向目的页面的URL字符串
将要传送的值添加到这个URL字符串里,以作为querystring的参数
使用Response.Redirect导航到指定的URL
下面是代码片段:
源表单
--------------------------------------------------------------
private void Button1_Click(object sender, System.EventArgs e)
{
string url;
url="anotherwebform.aspx?name="
+
TextBox1.Text + "&email="
+
TextBox2.Text;
Response.Redirect(url);
}
目的表单
--------------------------------------------------------------
private void Page_Load(object sender, System.EventArgs e)
{
Label1.Text=Request.QueryString["name"];
Label2.Text=Request.QueryString["email"];
}
使用session变量
这是另一种在页面间传值的办法。利用这个办法,可以将要传送的值保存到session变量,然后在另一个Web表单中进行存取。然而,需要知道的是,将太多的数据保存到session变量会给服务器带来额外的负担。所以,应该谨慎地使用这种方法。此外,采用这种方法可能需要在程序中以人工方式来清除不需要的session变量。典型的用法如下:
创建Web表单,包括必要的控件
在表单中放置可将表单post到服务器的button或linkbutton控件
在button的事件处理程序里设置session变量,将要传送的值放入其中
使用Response.Redirect导航到目的表单
在目的表单存取session变量,如必要并进行清除
以下是代码片段:
源表单
--------------------------------------------------------------
private void Button1_Click(object sender, System.EventArgs e)
{
//textbox1 and textbox2 are webform controls
Session["name"]=TextBox1.Text;
Session["email"]=TextBox2.Text;
Response.Redirect("anotherwebform.aspx");
}
目的表单
--------------------------------------------------------------
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
这个办法稍微复杂。做法是先将要传送的数据定义为源表单的property属性,因此需要在源表单添加些属性定义代码。然而换来的好处是代码相当清晰,而且能体现出面向对象的特点。步骤如下:
创建Web表单,包括必要的控件
创建用以返回要传送数值的Get属性
在表单中放置可将表单post到服务器的button或linkbutton控件
在button的事件处理程序里调用Server.Transer方法以导航到目的表单
在目的表单中通过Context.Handler属性取得源表单的引用。这样就可以使用在源表单创建的Get属性来存取要传送的数据
以下是代码片段:
源表单
--------------------------------------------------------------
public string Name
{
get
{
return TextBox1.Text;
}
}
public string EMail
{
get
{
return TextBox2.Text;
}
}
private void Button1_Click(object sender, System.EventArgs e)
{
Server.Transfer("anotherwebform.aspx");
}
目的表单
--------------------------------------------------------------
private void Page_Load(object sender, System.EventArgs e)
{
//create instance of source web form
WebForm1 wf1;
//get reference to current handler instance
wf1=(WebForm1)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}
小结
本文介绍了三种在Asp.net页面间传值的办法:Querystring,Session和Server.Transfer。同时也对这三种办法的优缺点进行了分析。
 
多人接受答案了。
 
后退
顶部