2015-11-13 43 views
-3

我在我的代码隐藏中创建了一个字符串,其中一部分包含超链接。我创建了我的网址,像这样:以编程方式显示的超链接显示除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

相反,我希望能够创建一个带有显示值的超链接,以便不显示URL,我可以显示句子的一部分 - 造成这样的事情:

enter image description here

在原始的HTML,我会通过使用a href显示值做到这一点,就像这样:

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

但是,我想从我的代码隐藏中实现此目的,以便可以通过编程方式更改文本和超链接,具体取决于显示它之前的操作。因此,解决方案必须是display.Text的属性。这是可能的,以及如何?

回答

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); 
+0

jf是正确的 - 超链接 - 不linkbutton - 是适当的控制 – andyb

+0

你可以随时更新你的答案:)。尽管我也喜欢你的第一个解决方案。但也许不是占位符,而是使用标签。你的格式化的字符串仍然有效。关键是''标签。 –

+0

你的第一个假设(一段)是正确的。我假设我可以将HTML转储为像这样的文字,并将其添加到将被解释为合法HTML的页面,而不是在.aspx中创建.ASP控件并修改它的'.Text'属性?而且,这是更好的方法吗? – Wolfish

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存有悲custom text

1

如果你需要动态的URL,在头版创建<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);