2015-11-13 65 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);