我正在尝试添加一个链接作为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);
答案 0 :(得分: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
是您产品的集合。
答案 1 :(得分:1)
我以前做的是ASP Literal。
<asp:Literal ID="Literal2" runat="server"></asp:Literal>
然后在使用
设置的代码中Literal2.Text = "<a class='productnameLink' href=" + item.Product.Url + ">" + item.Product.Name + "</a>"
答案 2 :(得分:1)
您可以使用面板控件,该控件呈现为 div 。
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>
答案 3 :(得分:0)
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 )
});
Bonus,你可以用averbatim字符串文字摆脱'\'转义字符:@“”(你需要加倍引号)。