【问题标题】:adding a specific user link code to end of url将特定的用户链接代码添加到 url 的末尾
【发布时间】:2011-11-02 05:02:16
【问题描述】:

我不太清楚如何解释这一点,但我需要能够将用户代码添加到他们访问的每个页面的 url 末尾。

让我带您了解一下......我是用户,请访问我的网站并输入我的用户代码 - 这不是登录名。没有密码,理论上会有一个框或某种类型的控件允许用户输入密码。

然后,此控件会将该用户的代码添加到站点中每个页面的每个 URL 的末尾,并且还会自动填充我们数据库中与该代码相关联的所有产品。

用户就像企业或联属网络营销商。我们需要在每个 URL 的末尾添加该代码,这样当他向客户发送包含购买链接的电子邮件时,客户将点击该链接,营销人员将获得销售奖励。

如果这有意义,有人会指导我学习有用的教程或向我解释这是如何工作的吗?谢谢

有人告诉我使用此代码:

<ul id="p7menubar">
    <li><a href="<% =GetIB("http://products.pfgbest.com") %>">Home</a></li>
    <li><a href="#" class="trigger">Lookup</a>
        <ul>
        <li><a href="<% =GetIB("Default.aspx") %>">Product</a></li>
        <li><a href="<% =GetIB("/FeatureSearch.aspx") %>">Feature</a></li>
        <li><a href="<% =GetIB("/DescriptionSearch.aspx") %>">Description</a></li>
        </ul>
    </li><!--end trigger li-->
    <div id="ib">
    Enter your IB code here:
        <asp:TextBox ID="IBTextBox" runat="server"></asp:TextBox>
        <asp:Button ID="IBTextBoxButton" runat="server" Text="Submit" />
    </div>
    </ul><!--end p7menubar-->


Partial Class MasterPage
Inherits System.Web.UI.MasterPage
Private _IB As String
Public Property IB() As String
    Get
        Return _IB
    End Get
    Set(ByVal value As String)
        _IB = value
    End Set
End Property

Public Function GetIB(ByVal url As String) As String
    If (url.Contains("?")) Then
        Return "&IB=" & _IB
    Else
        Return url & "?IB=" & _IB
    End If
End Function

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    If Not (String.IsNullOrEmpty(Request.QueryString("IB"))) Then
        _IB = Request.QueryString("IB")
    End If
End Sub
End Class

更新:在@DJ Quimby 和 ASP.net 3.5 for Dummies 的帮助下,我现在正在使用这段代码,而且无论我在文本框中输入什么值,它似乎都在使用它:

 Protected Sub IBTextBoxButton_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles IBTextBoxButton.Click
    Session("IB") = IBTextBox.Text
    Dim IB As Integer = Session("IB")
    Response.Redirect("IBDefault.aspx?Baccount=" + Session("IB"))
End Sub

更新:

<a target="_blank" href="<%# eval("Data") %>?IB=(Session("IB"))"><%#Eval("Title")%></a>

“IB”带有下划线,表示后面必须跟一个等号 (=) 和一个值。或者如果在引号中,它们必须匹配。

【问题讨论】:

  • 如果您指定您正在开发的环境类型,我们将能够给您一个更有意义的答案。
  • 哦,对不起,我使用的是 ASP.net 4.0 VB
  • 如果您只是希望保留数据以便每个页面都可以使用它,那么使用“Session”和“SessionState”可能对您更有意义。
  • @DJQuimby 我项目的这一部分被搁置了一段时间,但我现在又回来了。我查看了msdn.microsoft.com/en-us/library/ms972429.aspx,但这是一个非常古老的教程,你知道我可以去任何地方获取我需要的最新信息吗?我现在似乎只找到几乎毫无价值的旧信息。

标签: asp.net vb.net url hyperlink


【解决方案1】:

除非存在任何私人数据问题,否则最好将用户代码存储到会话中。

您可以通过执行以下操作将大多数您想要的变量添加到会话中: 会话(“用户代码”)=“12”

然后像这样检索它:
'将 userCode 调暗为整数'
'userCode = Session("userCode")'

只需确保您存储它的类型与您将其拉回时分配给它的类型兼容。

要检查每个页面,您可以在页面中声明一个私有变量来存储值:
Private userCode As Integer

然后
Sub Page_Load(sender As Object, e As EventArgs)
userCode = Session("userCode")
End Sub

然后只需执行您需要使用该值的任何其他代码。

【讨论】:

  • 那么我如何确保每个被访问的页面都返回用户在文本框中输入的值?
  • @jlg 编辑了我最初的帖子以回答您的问题。
  • 如何将此代码放在 URL 的末尾?我在原始帖子中添加了更多内容,但无法正常工作。
  • 现在您正在使用会话变量,您不需要将请求字符串附加到 URL。只要用户的会话没有超时,您就可以从任何页面的代码隐藏中访问会话变量。我对你发布的内联 asp 不太熟悉,所以如果这是你计划走的路线,你需要向 SO 发布一个单独的问题以获得更好的答案。 HTH
  • 哦,我必须在最后使用该代码,这样用户所要做的就是将该代码复制并粘贴到电子邮件中给他们的客户,以获得他们的销售信用。谢谢,我会在别的地方发帖
猜你喜欢
  • 2012-02-23
  • 2011-01-05
  • 1970-01-01
  • 1970-01-01
  • 2014-08-21
  • 2013-08-07
  • 2021-10-21
  • 1970-01-01
  • 2011-07-11
相关资源
最近更新 更多