在以编程方式显示的超链接中显示URL以外的文本

时间:2015-11-13 16:59:17

标签: c# asp.net hyperlink

我在我的代码隐藏中创建了一个字符串,其中一部分包含一个超链接。我像这样创建了我的URl:

var hostUrl = Request.Url.Scheme + "://" + Request.Url.Host + "/thispage.aspx";

如果我将其包含在字符串中,如下所示:

`display.Text = "Your request has been recorded. To return to the 
                               home page, click here: " + hostURL;`

结果输出如下所示:

enter image description here

相反,我希望能够创建一个带有显示值的超链接,这样我就可以显示部分句子而不是显示网址,从而产生如下内容:

enter image description here

在原始HTML中,我会使用a href的显示值来完成此操作,如下所示:

<a href="http://example.ex/thispage.aspx">--DISPLAY VALUE--</a>

但是,我希望从我的代码隐藏实现这一点 - 以便我可以根据显示它之前的操作以编程方式更改文本和超链接。因此,解决方案必须是display.Text的属性。这有可能,怎么样?

3 个答案:

答案 0 :(得分:3)

有点难以弄清楚你在这里尝试做什么。大概输出一段包含超链接的文本? 如果是这样,我会在你想要段落的页面上放置一个占位符控件(这里称为phParagraph),然后你可以这样做:

var uri = new Uri("http://stackoverflow.com");
var paragraph = new Literal();
paragraph.Text = String.Format("<p>Lorem ipsum <a href=\"{0}\">{1}</a> dolor</p>", uri.AbsoluteUri, "custom text");
phParagraph.Controls.Add(paragraph);

或者,如果您只想在页面上删除超链接,请执行以下操作:

var linkButton = new LinkButton();
linkButton.PostBackUrl = uri.AbsoluteUri;
linkButton.Text = "custom text";
phParagraph.Controls.Add(linkButton);

答案 1 :(得分:2)

您将无法使用超链接本身执行此操作。当涉及到超链接的“链接”部分时,它是全部或全部。在这些情况下,我通常会使用一些“免费”标签,因为我喜欢称它们。基本上只是添加一些绒毛的标签。

<asp:Label ID="lblBeforeLink" runat="server"></asp:Label>
<asp:HyperLink ID="hyp" runat="server"></asp:HyperLink>
<asp:Label ID="lblAfterLink" runat="server"></asp:Label>

然后在你的代码中,只需适当地设置控件。

lblBeforeLink.Text = "Lorem ipsum";
hyp.Text = "custom text";
hyp.NavigateUrl = "http://www.google.com"; // your url...
lblAfterLink.Text = "dolor";

导致类似这样的事情:

  

Lorem ipsum custom text dolor。

答案 2 :(得分:1)

如果您需要动态网址,请在首页中创建<asp:HyperLink ID="hprLink" runat="server" />,然后在后面的代码中使用以下内容:

hprLink.NavigateUrl = "http://your_web.site/"; hprLink.Text = "Text how to display your link";

如果您还需要动态HyperLink控件,请使用后面的代码中的下一个:

HyperLink hpr = new HyperLink();
hpr.Text = "Text to be displayed as hyperlink";
hpr.NavigateUrl = "http://your_web.site/";
somePanel_or_element.Controls.Add(hpr);