CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  .NET技术 >  ASP.NET

用户控件传递参数问题,大家进来看看

楼主liangbinlb(宁静致远)2005-05-11 10:56:50 在 .NET技术 / ASP.NET 提问

我在用户控件使用了ViewState("str")来存储宿主页面传递给用户控件的值。现在发现了问题:在用户控件的其它函数及过程中都可以读出ViewState("str")中的值,可是在用户控件的page_load事件中读ViewState("str")时,却为空值。  
  如果不使用ViewState的话,而使用Private   str   as   string的话,那么在用户控件的任何地方都无法得到宿主页面传递给用户控件的值。  
  大家看看如何处理问题。  
   
  代码如下:  
  付值:      
                Public     Property     StrSql()     As     String      
                                Get      
                                                Return     Me.ViewState("str")      
                                End     Get      
                                Set(ByVal     Value     As     String)      
                                                Me.ViewState("str")     =     Value      
                                End     Set      
                End     Property      
     
  其它函数及模块:      
                Private     Function     getCountPerPage()     As     Integer      
                                Return     CInt(ViewState("str"))------有值      
                End     Function      
     
  page_load事件﹕      
     
                Private     Sub     Page_Load(ByVal     sender     As     System.Object,     ByVal     e     As     System.EventArgs)     Handles     MyBase.Load      
                                If     Not     Page.IsPostBack     Then      
                                                Response.Write(ViewState("str"))----没有值了!!      
                                End     If      
                End     Sub 问题点数:20、回复次数:12Top

1 楼zhanmincode(killer)回复于 2005-05-11 11:07:57 得分 3

要先判断一下ViewState是否为空,因为刚进Page_Load的时候页面是第一次导入当然是空的  
    If     Not     Page.IsPostBack     Then      
                                                Response.Write(ViewState("str"))----没有值了!!      
                                End     If      
  这个只有在第一次进入页面是才会执行的!  
  解决方法:  
  直接用赋给用户控件的值,然后保存的ViewState中Top

2 楼liangbinlb(宁静致远)回复于 2005-05-11 11:10:32 得分 0

zhanmincode(killer  
  能不能说的具体一点呀!在线等。。。Top

3 楼aquariusdeng(无泪有伤之新手上路)回复于 2005-05-11 12:36:40 得分 3

不能通过ViewState在宿主和用户控件之间传值吧  
  这两个页面中间的ViewState就算你用了同一个名字  
  他们代表的含义也是不一样的  
   
  ViewState的机制和hidden控件是差不多的,只是比hidden多一层加密  
  就像你在宿主和用户控件中使用同样ID的文本框,那两个文本框也会在各自的页面独立工作,互不影响  
  ViewState也应该是这样  
   
  如果你在用户控件的其他地方取到了ViewState("str")),你再仔细查看一遍,  
  这个值是否是你在用户控件里面赋过的  
  (你可做个测试,看看在用户控件里面赋值是不是也不会影响宿主页面的ViewState("str")值)  
   
  如果要使宿主和用户控件之间能传递值且页面经过提交还能保持住,  
  使用Hidden控件可以做到,不过安全性稍低一点  
  在宿主页面有一个Hidden,ID是h1,(ruanat=server)  
  在用户控件找到它:  
  System.Web.UI.HtmlControls.HtmlInputHidden   h   =   (System.Web.UI.HtmlControls.HtmlInputHidden)this.Parent.FindControl("h1");  
  此时在用户控件里对h进行操作,与在宿主对h1进行操作效果是等同的  
  即在宿主中h1赋值后,用户控件中取h值就能取到  
   
  Top

4 楼liangbinlb(宁静致远)回复于 2005-05-11 13:43:20 得分 0

如果不用Hidden,可以做到传值吗?  
   
  我现在是宿主页面的page_load事件中传递参数给用户控件,传值完毕后,用户控件的其他地方都可以读出值,就是在用户控件的page_load事件中参数的值为空。但是宿主页面的page_load事件是先于用户控件的page_load事件,按理说应该是没有问题的。但是却出现了以上的问题。大虾们还有什么办法吗??  
   
  救命呀!!!Top

5 楼zhanmincode(killer)回复于 2005-05-11 13:56:10 得分 3

用户调用你的控件不是肯定要先把参数传给你吗?第一次用的时候你可以直接用,紧接着就把参数保存到ViewState中,这样你控件中的参数就不会丢失了Top

6 楼liangbinlb(宁静致远)回复于 2005-05-11 14:08:31 得分 0

参数不是不可以用,只是在用户控件的page_load事件中,参数值就不知为何消失了。郁闷ingTop

7 楼huashi_shihuashi(化石)回复于 2005-05-11 14:09:08 得分 3

假如说你的值只是一次的(就是在每次刷新页面的时候有用),可直接调用其它用户控件或页面的方法,假如说你的值需要在相应的页面中保存,使用   ViewState,假如你的值需在不同页面之间不停的切换而且需要保存值的话,就请用SessionTop

8 楼liangbinlb(宁静致远)回复于 2005-05-11 14:11:48 得分 0

还有我也是通过ViewState保存参数值的,依旧会出现这种问题。另外我刚刚使用了Hidden,好像也不行。Top

9 楼liangbinlb(宁静致远)回复于 2005-05-11 14:35:01 得分 0

up,up...  
  自己顶到思归大哥的出现Top

10 楼liangbinlb(宁静致远)回复于 2005-05-11 14:53:37 得分 0

大家帮帮我呀!!Top

11 楼xiaoyaoliang(逍遥亮)回复于 2005-05-11 14:54:01 得分 3

兄弟,page_load事件里面的postback是页面第一次初始化的时候才会进去的,viewstate里面当然不会有值存在的啊,而且是在两个页面之间传值,用的应该是session吧  
  Top

12 楼n10z(小鱼)回复于 2005-05-17 11:23:06 得分 5

要建一个委托,把用户控件里的Page_Load事件委托出来,在委托里进行赋值Top

相关问题

  • 2个用户控件中传递参数的问题,谢谢
  • 怎么从用户控件向父页面传递参数
  • 如何给(用户控件)UserControl传递参数?
  • 怎么向用户控件传递参数!?(DataGrid)
  • 请教页面向用户控件传递参数的问题
  • 如何给用户控件传递参数??急 大家帮忙看看呀
  • 请问网页上给控件传递参数的问题?
  • ★★☆☆----JavaScript中怎样给ActiveX控件传递参数----☆☆★★
  • 请教如何把控件做为函数的参数传递
  • !!!关于ACTIVEX控件字符串参数传递的问题

关键词

  • 控件
  • 页面
  • 用户
  • 用户控件
  • 宿主
  • viewstate
  • 参数
  • 值
  • 赋值
  • load事件

得分解答快速导航

  • 帖主:liangbinlb
  • zhanmincode
  • aquariusdeng
  • zhanmincode
  • huashi_shihuashi
  • xiaoyaoliang
  • n10z

相关链接

  • CSDN .NET频道
  • .NET类图书
  • C#类图书
  • .NET类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo