我的webapp中的'functions'文件中有一个类isSearching
,其中包含一个布尔属性。在我的搜索页面上,我将变量oSearchHandler
声明为Public Shared
变量。如何在我的网络应用程序的其他页面上访问oSearchHandler
的内容?
会话代码....
'search.aspx
Public Function oSearchString(ByVal oTextBoxName As String) As String
For Each oKey As String In Request.Form.AllKeys
If oKey.Contains(oTextBoxName) Then
Session.Add("searching", True)
Session.Add("search-term", Request.Form(oKey))
Return Request.Form(oKey)
End If
Next
Return ""
End Function
'theMaster.master
<%
If Session("searching") Then
%><ul style="float: right;">
<li>
<div class="gsSearch">
<asp:TextBox ID="searchbox" runat="server"></asp:TextBox>
</div>
</li>
<li>
<div class="gsSearch">
<asp:Button ID="searchbutton" runat="server" Text="search" UseSubmitBehavior="true" PostBackUrl="search.aspx" CssClass="searchBtn" />
</div>
</li>
</ul>
<%
End If
%>
我认为会议会很好。
答案 0 :(得分:2)
如果您正在谈论在页面交互之间访问这些变量,您需要记住在页面之间丢弃状态。
相反,您需要将此数据存储在会话状态中。
如果它不是跨页面交互,而只是从代码的其他部分访问数据,那么关键是ASP.NET页面变成了一个类和你的公共共享变量,即该类的静态属性。
因此,您可以使用PageName.oSearchHandler
从其他地方访问它[编辑]您能否提供一些有关oSearchHandler是什么以及您打算如何使用它的更多信息?那么我们可能会提供更多考虑的建议。
答案 1 :(得分:2)
如果您希望从多个页面访问它,您应该将其从单个页面类中删除,并将其放在更易于访问全局的位置,例如Application集合。鉴于变量的命名,0SearchHandler是一个委托吗?我不熟悉VB.NET或术语。
更新:Steve Morgan提到使用Session集合,当提到“静态”或“共享”时,我在全球范围内思考更多。根据您使用变量的方式,您可以使用“应用程序”(如果它将在用户和会话之间共享),或“会话”(如果它将由一个用户在一个会话中使用)。在VB.NET中,它们都很容易使用:
Session("yourKey") = YourObjectYouWantToSave
Application("yourKey") = YourObjectYouWantToSave
非常简单的东西。
'search.aspx
Public Function oSearchString(ByVal oTextBoxName As String) As String
For Each oKey As String In Request.Form.AllKeys
If oKey.Contains(oTextBoxName) Then
Session("searching") = True
Session("search-term") = Request.Form(oKey)
Return Request.Form(oKey)
End If
Next
Return ""
End Function
' theMaster.master.vb
In PageLoad Method:
...
Dim bSearching as Boolean
bSearching = IIf(Session("searching") is Nothing, False, Session("searching") )
ulSearch.visible = bSearching
...
'theMaster.master
<ul style="float: right;" runat="server" id="ulSearch">
<li>
<div class="gsSearch">
<asp:TextBox ID="searchbox" runat="server"></asp:TextBox>
</div>
</li>
<li>
<div class="gsSearch">
<asp:Button ID="searchbutton" runat="server" Text="search" UseSubmitBehavior="true" PostBackUrl="search.aspx" CssClass="searchBtn" />
</div>
</li>
</ul>
好的,这是一些额外的代码,但我认为你会遇到更少的问题。再加上我的VB有点生疏了。实际上,如果母版页是您将使用它的页面,我会将该变量作为公共属性放在该母版页上。您可以使用this.Master访问页面母版页(至少在C#中,我认为它是VB.NET中的Me.Master)。