我在用户控件使用了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
如果不使用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
解决方案 »
- 讨论下这两个语句区别
- js获取动态添加控件的值
- 求助 关于GridView的问题 绑定时如何IF多个选项
- 关于 dll 问题
- 关于PAGE类的重载和设计视图不能打开的问题
- request接收到不从浏览器传来的中文参数?
- C#中控件分为哪几类?
- ---如何把网站发布到网上
- ASP.NET中弹出警告窗口的问题!!!!!火急!!!
- 哎,一声叹息,该怎么做啊?我讲讲我的想法,你来帮我出主意,好吗?在线等待
- 三个困惑了我一段时间的问题,高分相送(ActiveReports.NET -2147023888 Runtime Error)
- 高高高分,有没有时事响应的事件,像VC里的ontime或是onhandle事件的??
If Not Page.IsPostBack Then
Response.Write(ViewState("str"))----没有值了!!
End If
这个只有在第一次进入页面是才会执行的!
解决方法:
直接用赋给用户控件的值,然后保存的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值就能取到
自己顶到思归大哥的出现