关于传参问题 做企业应用经常会一个页面4-5个甚至更多的iframe这样传参就会出现问题了 大家都是用js来传递参数还是用静态变量 还是用sesssion请给出你们选择方式的原因 以及优点请给出你们选择方式的原因 以及优点这句话是重点!!!!!!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 以上都不需要,直接通过url传参 r u kidding me ? 传参 GET POST 还有什么? 完蛋了原来都是高手。GET POST.。。 ***.aspx?id=***然后另外一页在C#里用request["id"] get,post,js,viewstate,cookie,session,application,crosspost,...........楼主可以看下他们都是神马情况下用,然后选个适合自己的。偶们不能改变ASP。NET只能适应它的模式。 对了还有一个隐藏域传值,和transform传值;SORRY,忘了 1,QueryString 优点: 实现简单 不使用服务器资源缺点:传递的值会显示在地址栏中 有风险, 并不能传对象 2,用隐藏域 优点:实现简单 隐藏域在页面上存储和读取缺点:存储结构少 支持简单的数据结构 存储量少 而且大量的数据会受到防火墙和代理的组织3,ViewState优点:一个页面多个请求自动保存值,不用服务器资源 实现简单视图状态中的值经过哈希计算和压缩并且对Unicode实现编码 安全性>隐藏域缺点: 数据有存储在页面上本身,存储较大的值是 用户请求页和发送页的速度会减慢。4,cookie优点:简单缺点:不能被所有的浏览器支持,而且还可能被用户禁止或删除 不能保存关键数据 对其敏感5,Application变量缺点 一旦定义,会影响全局所有程序在不用它是 要显式的清除,在保存数据时 如果服务器崩溃 或损坏 数据就会消失 6,Session 优点:易于实现 较高的安全性和持久性可以应对IIS重启和辅助进程重启 可以在多进程中使用 session也可以用于不支持cookie的浏览器缺点:消耗服务器内存 7,使用静态属性 缺点 :需要额外编程,站服务器内存.8, Server Transfer 9,Cache未来可能还会有更多 更安全的传值方法。不过目前先研究这些吧... 只能根据不同情况来出处理1:如果说从A列表页面到B列表页面 比如说 看 详情 我们一般会选择QueryString 之间给?id=X2:如果说是显示每个页面要提示登陆的信息 比如用户名 可以用 Session 或者 cookie在mvc3.0中 还有 Viewbag 根据不同功能而言 才能决定 其实都用的蛮多 说实话我感觉CSDN的牛人越来越多了。 多个就***.aspx?id=***&&aa=***&&***; 目前在ASP.NET中页面传值共有这么几种方式: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、Cookie6、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 ); }}三、如果有许多查询页面共用一个结果页面的设置方法: 在这种方式中关键在于“ QueryPage queryPage = ( QueryPage )Context.Handler; ”的转换,只有转换不依赖于特定的页面时即可实现。如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用就是让结果页面获得构建结果时所需的参数,就可实现多页面共享一个结果页面操作!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 ); }}if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = false; var cb_blogId = 33193; var cb_entryId = 1216678; var cb_blogApp = "wenly"; var cb_blogUserGuid = "9d8d3d0b-63cf-dd11-9e4d-001cf0cd104b"; var cb_entryCreatedDate = '2008/6/10 13:58:00'; ASPX在新窗口打开一个XML内容 fckeditor greybox 为什么在服务器上无法显示了 在线等 必须使用可更新的查询????? 请教各位高手!!如何读取客户端光盘中的内容??(VB.NET) Serializable问题 浏览按钮的手工编写 能否將一個數據表綁定到一個Label中? 为何我的datagrid分页程序出错?(不想用CustomPaging) 控件的名字? 数据库中插入一个datetime时出错,搞不懂是为什么。。。 C#定义的函数在asp.NET 的前端文件中如何调用? 项目方案咨询各位!
r u kidding me ?
楼主可以看下他们都是神马情况下用,然后选个适合自己的。
偶们不能改变ASP。NET只能适应它的模式。
1,QueryString
优点: 实现简单 不使用服务器资源
缺点:传递的值会显示在地址栏中 有风险, 并不能传对象 2,用隐藏域
优点:实现简单 隐藏域在页面上存储和读取
缺点:存储结构少 支持简单的数据结构 存储量少 而且大量的数据会受到防火墙和代理的组织3,ViewState
优点:一个页面多个请求自动保存值,不用服务器资源 实现简单视图状态中的值经过哈希计算和压缩并且对Unicode实现编码 安全性>隐藏域
缺点: 数据有存储在页面上本身,存储较大的值是 用户请求页和发送页的速度会减慢。4,cookie
优点:简单
缺点:不能被所有的浏览器支持,而且还可能被用户禁止或删除 不能保存关键数据 对其敏感5,Application变量
缺点 一旦定义,会影响全局所有程序
在不用它是 要显式的清除,在保存数据时 如果服务器崩溃 或损坏 数据就会消失 6,Session
优点:易于实现 较高的安全性和持久性可以应对IIS重启和辅助进程重启 可以在多进程中使用 session也可以用于不支持cookie的浏览器
缺点:消耗服务器内存
7,使用静态属性
缺点 :需要额外编程,站服务器内存.
8, Server Transfer
9,Cache
未来可能还会有更多 更安全的传值方法。
不过目前先研究这些吧...
1:如果说从A列表页面到B列表页面 比如说 看 详情 我们一般会选择QueryString 之间给?id=X
2:如果说是显示每个页面要提示登陆的信息 比如用户名 可以用 Session 或者 cookie
在mvc3.0中 还有 Viewbag 根据不同功能而言 才能决定 其实都用的蛮多
<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 );
}
}三、如果有许多查询页面共用一个结果页面的设置方法: 在这种方式中关键在于“ QueryPage queryPage = ( QueryPage )Context.Handler; ”的转换,只有转换不依赖于特定的页面时即可实现。如果让所有的查询页面都继承一个接口,在该接口中定义一个方法,该方法的唯一作用就是让结果页面获得构建结果时所需的参数,就可实现多页面共享一个结果页面操作!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 );
}
}if ($ != jQuery) { $ = jQuery.noConflict(); } var isLogined = false; var cb_blogId = 33193; var cb_entryId = 1216678; var cb_blogApp = "wenly"; var cb_blogUserGuid = "9d8d3d0b-63cf-dd11-9e4d-001cf0cd104b"; var cb_entryCreatedDate = '2008/6/10 13:58:00';