【问题标题】:ASP.NET variable inside hyperlink / URL string超链接/URL 字符串中的 ASP.NET 变量
【发布时间】:2015-07-14 04:02:08
【问题描述】:

我正在尝试修改 bvcommerce 订单管理器以链接到列出的商品,以便我们的员工可以通过单击链接更轻松地填写订单,将他们带到商品页面,而不必手动搜索它。

我在原始 asp:Label 代码周围包裹了一个 asp:hyperlink,如下所示:

            <asp:TemplateField HeaderText="SKU">
            <ItemTemplate>
                <asp:Hyperlink NavigateUrl='/product/SKUFIELDHERE.aspx' runat="server"><asp:Label ID="SKUField" runat="server"></asp:Label></asp:Hyperlink>
            </ItemTemplate>
        </asp:TemplateField>

现在,我的问题是我需要获取填充到“/product/”和“.aspx”之间的标签中的 SKUField

我对 ASP.NET 不够熟悉,不知道如何操作,而且我多次尝试使用 等都失败了。

我也看过后面,如下所示:

Dim SKUField As Label = e.Row.FindControl("SKUField")
If SKUField IsNot Nothing Then
    SKUField.Text = lineItem.ProductSku
End If

所以请告诉我如何尽可能少地这样做,最好不要修改后面。

非常感谢!

编辑: 如下面的 cmets 所示,我现在尝试添加:

Dim SKULink As HyperLink = e.Row.FindControl("SKULink") 
If SKULink IsNot Nothing Then
SKULink.NavigateUrl = "products"+lineItem.ProductSku+".aspx"
End If

在后面,并替换为 navigateURL="SKULink" 但现在 URL 只是 ~/SKULink

【问题讨论】:

  • 您想动态更改网址吗?
  • 这是一个 asp.net 中继器吗?如果是,请尝试在“DataBind”事件中设置 url
  • @User2012384 你能举个例子吗?
  • @MairajAhmad 是的,使用在 asp:label 中填充的相同值
  • 您可以在后面的代码中找到asp:HyperLink,并将其NavigateUrl 设置为您需要的值。

标签: asp.net variables


【解决方案1】:

解决了这个问题。解决方案是在后面对其进行编码,并在前面像这样调用它的 ID。最终工作代码给将来需要参考的任何人:

            <asp:TemplateField HeaderText="SKU">
            <ItemTemplate>
                <asp:Hyperlink ID="SKULink" runat="server"><asp:Label ID="SKUField" runat="server"></asp:Label></asp:Hyperlink>
            </ItemTemplate>
            </asp:TemplateField>

背后:

                Dim SKUField As Label = e.Row.FindControl("SKUField")
            If SKUField IsNot Nothing Then
                SKUField.Text = lineItem.ProductSku
            End If

            Dim SKULink As HyperLink = e.Row.FindControl("SKULink")
            If SKULink IsNot Nothing Then
                SKULink.NavigateUrl = "~/product/"+lineItem.ProductSku+".aspx"
            End If

【讨论】:

    【解决方案2】:

    没有必要使用后面的代码,而且会使您的代码过于复杂。保持简单,使用HyperLinkField。抛弃 TemplateField。

    <asp:HyperLinkField DataTextField="DISPLAYNAME"
            DataNavigateUrlFields="SKUFIELD"
            DataNavigateUrlFormatString="~/product/{0}.aspx"          
            HeaderText="SKU" />
    

    将 DISPLAYNAME 替换为列名(如果您绑定到数据表)或属性名称(如果您绑定到对象)。将 SKUFIELD 替换为 SKU 列名称或属性名称。

    【讨论】:

      猜你喜欢
      • 2013-09-18
      • 2020-03-20
      • 1970-01-01
      • 2016-07-17
      • 2015-06-16
      • 2016-06-07
      • 1970-01-01
      • 2016-05-30
      • 2011-12-05
      相关资源
      最近更新 更多