很纳闷的问题,关于父子页面间值的问题 在父页面已经改变的一个值,但是到子页面里显示的还是父页面刚打开时的那个值,为什么啊父页面里有个textbox 我给它赋值后打开子页面 window.opener.document.forms["form1"].TextBox.value这句话获得的值还是开始时的空值,为什么啊,怎样才能在子页面中获得呢,请教了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ASP.NET中页面传值的几种方法 2007-12-12 13:26:00 来源:中国自学编程网 作者:转载 点击: --------------------------------------------------------------------------------如果在两个页面间需要大量的参数要传传递,如数据查询等页面时,用1 - 6的方法传值及其不便,而第 7 种方法确有一独特的优势!但使用该方法时需要一定的设置,现简单介绍一下该方法的使用方式: 1、表单提交, <form action= "target.aspx" method = "post" name = "form1"> <input name = "param1" value = "1111"/> <input name = "param2" value = "2222"/> </form> .... form1.submit(); .... 此种方在ASP。NET中无效,因为ASP。NET的表单总是提交到自身页面,如果要提交到别一页面,需要特殊处理。 2、<A href="target.aspx?param1=1111¶m2=2222">链接地址传送</A>接收页面: string str = Request["param1"] 3、Session共享发送页面:Session("param1") = "1111"; 按收页面 string str = Session("param1").ToString(); 4、Application共享发送页面: Application("param1") = "1111"; 按收页面: string str = Application("param1").ToString(); 此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。 5、Cookie 6、Response.Redirect()方式 Response.Redirect("target.aspx?param1=1111¶m2=2222") 接收页面: string str = Request["param1"] 7、Server.Transfer()方式。 Server.Transfer("target.aspx?param1=1111¶m2=2222") 接收页面: string str = Request["param1"] 二、如果在两个页面间需要大量的参数要传传递,如数据查询等页面时,用1 - 6的方法传值及其不便,而第 7 种方法确有一独特的优势!但使用该方法时需要一定的设置,现简单介绍一下该方法的使用方式: 以查询数据页面为例: 在查询页面中设置如下公有属性(QueryPage.aspx): public class QueryPage : System.Web.UI.Page{protected System.Web.UI.WebControls.TextBox txtStaDate;protected System.Web.UI.WebControls.TextBox txtEndDate; .../// <summary>/// 开始时间/// </summary>public string StaDate{get{ return this.txtStaDate.Text;}set{this.txtStaDate.Text = value;}}/// <summary>/// 结束时间/// </summary>public string EndDate{get{ return this.txtEndDate.Text;}set{this.txtEndDate.Text = value;}}....private void btnEnter_Click(object sender, System.EventArgs e){Server.Transfer("ResultPage.aspx");}} 在显示查询结果页面(ResultPage.aspx): public class ResultPage : System.Web.UI.Page{ private void Page_Load(object sender, System.EventArgs e) {//转换一下即可获得前一页面中输入的数据QueryPage queryPage = ( QueryPage )Context.Handler;Response.Write( "StaDate:" );Response.Write( queryPage.StaDate );Response.Write( "<br/>EndDate:" );Response.Write( queryPage.EndDate ); }}如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用就是让结果页面获得构建结果时所需的参数,就可实现多页面共享一个结果页面操作!1、先定义一个类,用该类放置所有查询参数:/// <summary>/// 结果页面中要用到的值/// </summary>public class QueryParams{private string staDate;private string endDate;/// <summary>/// 开始时间/// </summary>public string StaDate{get{ return this.staDate;}set{this.staDate = value;}}/// <summary>/// 结束时间/// </summary>public string EndDate{get{ return this.endDate;}set{this.endDate = value;}}} 2、接口定义:/// <summary>/// 定义查询接口。/// </summary>public interface IQueryParams{/// <summary>/// 参数/// </summary>QueryParams Parameters{get;}} 3、查询页面继承IQueryParams接口(QueryPage.aspx):/// <summary>///查询页面,继承接口/// </summary>public class QueryPage : System.Web.UI.Page, IQueryParams{protected System.Web.UI.WebControls.TextBox txtStaDate;protected System.Web.UI.WebControls.TextBox txtEndDate;private QueryParams queryParams; .../// <summary>/// 结果页面用到的参数/// </summary> public QueryParams Parameters{get{return queryParams;}}....private void btnEnter_Click(object sender, System.EventArgs e){//赋值queryParams = new QueryParams();queryParams.StaDate = this.txtStaDate.Text;queryParams.EndDate = this.txtEndDate.TextServer.Transfer("ResultPage.aspx");}} 4、别外的页面也如此设置 5、接收页面(ResultPage.aspx):public class ResultPage : System.Web.UI.Page{ private void Page_Load(object sender, System.EventArgs e) {QueryParams queryParams = new QueryParams();IQueryParams queryInterface;//实现该接口的页面if( Context.Handler is IQueryParams){queryInterface = ( IQueryParams )Context.Handler;queryParams = queryInterface.Parameters;}Response.Write( "StaDate:" );Response.Write( queryParams.StaDate );Response.Write( "<br/>EndDate:" );Response.Write( queryParams.EndDate ); }} 读取EXCEL时会卡死 求助 Winform打包-快捷方式居然指向安装包文件 高手指教:SqlBulkCopy 如何导入到临时表 关于Response.ContentType的问题 C# 水晶報表 打包具有xml文档的应用程序出错· ACE.OleDb 读取Excel时 自动截取长度为255个字符 遍历文件 ,并在treeview中显示 我安装VS.NET2003(共三张盘)时,提示插入VS.NET系统必备光盘,是第几张盘? 问个简单的问题,谢谢各位高手赐教。 asp.net打包问题 asp.net 下拉框 DropDownlist编程问题
2007-12-12 13:26:00 来源:中国自学编程网 作者:转载 点击:
--------------------------------------------------------------------------------
如果在两个页面间需要大量的参数要传传递,如数据查询等页面时,用1 - 6的方法传值及其不便,而第 7 种方法确有一独特的优势!但使用该方法时需要一定的设置,现简单介绍一下该方法的使用方式:
1、表单提交,
<form action= "target.aspx" method = "post" name = "form1">
<input name = "param1" value = "1111"/>
<input name = "param2" value = "2222"/>
</form>
....
form1.submit();
....
此种方在ASP。NET中无效,因为ASP。NET的表单总是提交到自身页面,如果要提交到别一页面,需要特殊处理。
2、<A href="target.aspx?param1=1111¶m2=2222">链接地址传送</A>
接收页面: string str = Request["param1"]
3、Session共享
发送页面:Session("param1") = "1111";
按收页面 string str = Session("param1").ToString();
4、Application共享
发送页面: Application("param1") = "1111";
按收页面: string str = Application("param1").ToString();
此种方法不常使用,因为Application在一个应用程序域范围共享,所有用户可以改变及设置其值,故只应用计数器等需要全局变量的地方。
5、Cookie
6、Response.Redirect()方式
Response.Redirect("target.aspx?param1=1111¶m2=2222")
接收页面: string str = Request["param1"]
7、Server.Transfer()方式。
Server.Transfer("target.aspx?param1=1111¶m2=2222")
接收页面: string str = Request["param1"]
二、如果在两个页面间需要大量的参数要传传递,如数据查询等页面时,用1 - 6的方法传值及其不便,而第 7 种方法确有一独特的优势!但使用该方法时需要一定的设置,现简单介绍一下该方法的使用方式:
以查询数据页面为例:
在查询页面中设置如下公有属性(QueryPage.aspx):
public class QueryPage : System.Web.UI.Page
{
protected System.Web.UI.WebControls.TextBox txtStaDate;
protected System.Web.UI.WebControls.TextBox txtEndDate;
...
/// <summary>
/// 开始时间
/// </summary>
public string StaDate
{
get{ return this.txtStaDate.Text;}
set{this.txtStaDate.Text = value;}
}
/// <summary>
/// 结束时间
/// </summary>
public string EndDate
{
get{ return this.txtEndDate.Text;}
set{this.txtEndDate.Text = value;}
}
....
private void btnEnter_Click(object sender, System.EventArgs e)
{
Server.Transfer("ResultPage.aspx");
}
}
在显示查询结果页面(ResultPage.aspx):
public class ResultPage : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
//转换一下即可获得前一页面中输入的数据
QueryPage queryPage = ( QueryPage )Context.Handler;
Response.Write( "StaDate:" );
Response.Write( queryPage.StaDate );
Response.Write( "<br/>EndDate:" );
Response.Write( queryPage.EndDate ); }
}
如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用就是让结果页面获得构建结果时所需的参数,就可实现多页面共享一个结果页面操作!
1、先定义一个类,用该类放置所有查询参数:
/// <summary>
/// 结果页面中要用到的值
/// </summary>
public class QueryParams
{
private string staDate;
private string endDate;
/// <summary>
/// 开始时间
/// </summary>
public string StaDate
{
get{ return this.staDate;}
set{this.staDate = value;}
}
/// <summary>
/// 结束时间
/// </summary>
public string EndDate
{
get{ return this.endDate;}
set{this.endDate = value;}
}
}
2、接口定义:
/// <summary>
/// 定义查询接口。
/// </summary>
public interface IQueryParams
{
/// <summary>
/// 参数
/// </summary>
QueryParams Parameters{get;}
}
3、查询页面继承IQueryParams接口(QueryPage.aspx):
/// <summary>
///查询页面,继承接口
/// </summary>
public class QueryPage : System.Web.UI.Page, IQueryParams
{
protected System.Web.UI.WebControls.TextBox txtStaDate;
protected System.Web.UI.WebControls.TextBox txtEndDate;
private QueryParams queryParams;
...
/// <summary>
/// 结果页面用到的参数
/// </summary>
public QueryParams Parameters
{
get
{
return queryParams;
}
}
....
private void btnEnter_Click(object sender, System.EventArgs e)
{
//赋值
queryParams = new QueryParams();
queryParams.StaDate = this.txtStaDate.Text;
queryParams.EndDate = this.txtEndDate.Text
Server.Transfer("ResultPage.aspx");
}
}
4、别外的页面也如此设置
5、接收页面(ResultPage.aspx):
public class ResultPage : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
QueryParams queryParams = new QueryParams();
IQueryParams queryInterface;
//实现该接口的页面
if( Context.Handler is IQueryParams)
{
queryInterface = ( IQueryParams )Context.Handler;
queryParams = queryInterface.Parameters;
}
Response.Write( "StaDate:" );
Response.Write( queryParams.StaDate );
Response.Write( "<br/>EndDate:" );
Response.Write( queryParams.EndDate );
}
}