如何坚持回发
变量i页面加载创造了单页(背后的.vb代码)和创建公共intFileID作为整数如何坚持回发
我检查查询字符串,如果可用或设置intFileID = 0它分配
Public intFileID As Integer = 0 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
If Not Request.QueryString("fileid") Is Nothing Then
intFileID = CInt(Request.QueryString("fileid"))
End If
If intFileID > 0 Then
GetFile(intFileID)
End If
End If
End Sub
Private Sub GetFile()
'uses intFileID to retrieve the specific record from database and set's the various textbox.text
End Sub
提交按钮的单击事件可以根据intFileID变量的值插入或更新记录。我需要能够在回发中坚持这一价值,才能发挥作用。
该页面只是插入或更新SQL数据库中的记录。我没有使用gridview,formview,detailsview,或任何其他rad类型的对象,它自己坚持键值,我不想使用它们中的任何一个。
如何在intFileID中持续设置值而不在HTML中创建可能会更改的内容。
[编辑]更改Page_Load中使用的ViewState来持久intFileID值
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not Page.IsPostBack Then
If Not Request.QueryString("fileid") Is Nothing Then
intFileID = CInt(Request.QueryString("fileid"))
End If
If intFileID > 0 Then
GetFile(intFileID)
End If
ViewState("intFileID") = intFileID
Else
intFileID = ViewState("intFileID")
End If
End Sub
回答:
正如其他人所指出的那样,你可以将其存储在Session或ViewState的。如果它是页面特定的,我喜欢将它存储在ViewState中而不是Session中,但我不知道是否一种方法通常优于另一种方法。
在VB中,你将一个项目存储在象ViewState这样的:
ViewState(key) = value
和检索它像:
value = ViewState(key)
回答:
储存于会话。
Page.Session["MyPage_FileID"] = intFileID
你必须为用户导航围绕管理它的逻辑,但如果它是始终设置在从GET页面加载(或你清楚,如果不是可以用GET),那么你应该可以在会议后使用它提交PostBack。
回答:
储存于:
- 会议
- 的ViewState
- 隐藏输入
回答:
记住:
每个服务器代码运行时,它的在一个崭新的页面类实例中。这是每个回发。
回答:
只是要总结一下上面所说的。
您可以使用Session,Viewstate或隐藏字段。
我个人更喜欢viewstate,因为它可以在Web场环境中工作,Session不会,它不会将它存储在等待用户的服务器上,最多可以移除20分钟,并且viewstate一般是地方用于页面级数据。
您可以使用隐藏字段,但用户可以更容易地修改它。
回答:
实际上,由于ASP.NET页面回传给自己 - 包括查询字符串 - 您可以删除If Not Page.IsPostBack
条件。然后它会在每次回发时自行设置。
回答:
我个人会选择将值存储在控制状态而不是视图状态,因为viewstate可以很容易地关闭。即使viewstate由于任何原因关闭,ControlState仍会保留。我已经列举了一个如何完成这个过程的例子。
Private intFileId As Integer = 0 Public Property FileID() As Integer
Get
Return intFileId
End Get
Set(ByVal value As Integer)
intFileId = value
End Set
End Property
Protected Overrides Function SaveControlState() As Object
Dim objState(2) As Object
objState(0) = MyBase.SaveControlState()
objState(1) = Me.FileID
Return objState
End Function
Protected Overrides Sub LoadControlState(ByVal savedState As Object)
Dim objState() As Object
objState = savedState
MyBase.LoadControlState(objState(0))
Me.FileID = CInt(objState(1))
End Sub
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
Me.Page.RegisterRequiresControlState(Me)
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If Not Page.IsPostBack Then
If Not String.IsNullOrEmpty(Request.QueryString("fileid")) Then
Me.FileID = CInt(Request.QueryString("fileid"))
End If
End If
Response.Write(Me.FileID.ToString())
End Sub
回答:
我将使用会话为suggested by tvanfosson. 的ViewState和HiddenField可能是,如果你想保留大数据像在一个论坛的主题页面的评论数据集太重..
回答:
Session["KeyName"] = your value;
- 类型强制类型检索和存储会话中的数据,如下所示:
Datatable dt = (DataTable)(Session["KeyName"]);
或
ViewState["KEY"]= value;
- 类型转换的类型来检索和数据从会话存储像如下:
String str = (String)ViewState["KEY"];
以上是 如何坚持回发 的全部内容, 来源链接: utcz.com/qa/263893.html