【问题标题】:Href Link Code Behind后面的 Href 链接代码
【发布时间】:2014-08-07 14:59:33
【问题描述】:

我正在尝试添加一个链接作为 Product.Text 的一部分,但我在这里搞错了,在后面的 C-Sharp 代码上执行此操作。

tcProduct.Text = "<div class=\"productname\">" + "<a class=\"productnameLink\" href=\"item.Product.Url\">" + item.Product.Name + "</a>" + "</div>";

反斜杠开始让我感到困惑。我想我应该使用 .NET 超链接而不是普通的超链接??

我试过了,但没有添加超链接;

            HyperLink productNameLink = new HyperLink();
            productNameLink.Text = "<div class=\"productname\">" + item.Product.Name + "</div>"; 
            productNameLink.NavigateUrl = item.Product.Url.ToString();
            productNameLink.CssClass = "prodNameLink";
            tcProduct.Controls.Add(productNameLink);

【问题讨论】:

  • tcProduct是什么控件?
  • ..反斜杠开始让我感到困惑..:然后使用单引号作为属性。另外,尝试使用.InnerHtml 而不是.Text

标签: c# asp.net .net hyperlink


【解决方案1】:

纯字符串格式应该可以解决问题:

tcProduct.Text = string.Format("<div class=\"productname\"><a class=\"productnameLink\" href=\"{0}\">{1}</a></div>", 
    item.Product.Url, item.Product.Name);

但是,您最好使用专门用于此类事情的中继器。标记:

<asp:Repeater ID="rptProducts" runat="server">
    <HeaderTemplate><h1>Products</h1></HeaderTemplate>
    <ItemTemplate>
        <div class="productname"><a class="productnameLink" href="<%# Eval("Url") %>"><%# Eval("Name") %></a></div>
    </ItemTemplate>
</asp:Repeater>

在后面的代码中:

rptProducts.DataSource = arrProducts;
rptProducts.DataBind();

arrProducts 是您的产品集合。

【讨论】:

    【解决方案2】:

    我以前做的是 ASP Literal。

    <asp:Literal ID="Literal2" runat="server"></asp:Literal> 
    

    然后在代码中设置为它与

    Literal2.Text = "<a class='productnameLink' href=" + item.Product.Url + ">" + item.Product.Name + "</a>"
    

    【讨论】:

      【解决方案3】:

      您可以使用呈现为 divPanel 控件。

      var link = new HyperLink
      {
          Text = item.Product.Name,
          NavigateUrl = item.Product.Url.ToString(),
          CssClass = "prodNameLink"
      };
      var panel = new Panel
      {
          CssClass = "productname"
      };
      panel.Controls.Add(link);
      tcProduct.Controls.Add(panel);
      

      输出:

      <div class="productname">
         <a class="prodNameLink" href="http://www.google.com">Google</a>
      </div>
      

      【讨论】:

        【解决方案4】:

        Text 属性应该是纯文本。
        有很多方法可以做你需要做的事情,但如果你想坚持使用 html 字符串,你可以使用:

        tcProduct.Controls.Add(new HtmlGenericControl
                {
                    InnerHtml = string.Format(@"<div class=""productname""><a class=""productnameLink"" href=""{0}"">{1}</a></div>", item.Product.Url, item.Product.Name )
                });
        

        奖励,您可以使用普通字符串文字摆脱 '\' 转义字符:@""(您需要双引号)。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-12-22
          • 1970-01-01
          • 2018-06-20
          • 2019-06-01
          • 2021-05-13
          相关资源
          最近更新 更多