2009-11-30 34 views
0

我在c#中使用response.write創建asp鏈接,當直接插入到asp代碼中時,相同的HyperLink代碼可以流暢地運行,但是當我將其複製/粘貼到response.write(「...」)它顯示爲一個不可點擊的黑色文本。在c#aspx的運行庫中創建可點擊的鏈接

我忘了什麼嗎?

<asp:HyperLink ID='HyperLink1' runat='server' NavigateUrl='Exibe.aspx'> CLICK HERE </asp:HyperLink> 

在ASPX源上方拋出這個確切的代碼工作大大

response.write("<asp:HyperLink ID='HyperLink1' runat='server' NavigateUrl='Exibe.aspx'> CLICK HERE </asp:HyperLink>"); 

,這變成黑色文本

+0

另外一個問題,如果你讓我..我必須想辦法在我的代碼沿querrystring發送一個字符串我的鏈接..它不會讓我連接鏈接代碼.. – Marcelo 2009-11-30 12:06:00

回答

2

您不能插入一個asp:直接超鏈接標籤到像響應流因爲超鏈接實際上是一個需要自己「渲染」的控件(如果用一個普通的「a」錨/超鏈接標籤代替它,它會正常工作)。

相反,您需要創建控件並以編程方式將其添加到頁面中,或者可以使用中繼器控件呈現錨點。

+0

我的問題是..這不是確切的代碼,只是一個更簡單的。我要使用querrystrings,所以超鏈接將不得不在運行時創建。 – Marcelo 2009-11-30 11:46:00

+0

......沒關係。我注意到querrystrings與一起工作..謝謝! – Marcelo 2009-11-30 11:49:09

0

你正在嘗試做完全不同的事情:

  1. 標記(ASP:超鏈接)將被編譯。
  2. Response.Write(「asp:HyperLink」)不會。它將按原樣呈現文本,當然您也不會看到任何鏈接,實際上您應該可以在標記asp:HyperLink(包括HTML源代碼中的標記)中看到文本。

如果你想dunamically創建一個鏈接,您可以使用下面的代碼片段做到這一點:

<asp:HyperLink ID='HyperLink1' runat='server' NavigateUrl='<%= GetDynamicUrl() %>'> CLICK HERE </asp:HyperLink> 
/// Or plain HTML 
<a href="<%= GetDynamicUrl()"><%= GetTheLinkText() %></a> 
+0

它是代碼隱藏文件(在您編寫C#或VB.NET代碼的位置)的公共/受保護方法。這個方法可以返回任何你想要的動態並在服務器上執行 – 2009-11-30 12:55:11

0

如果你想在這樣,你既可以使用服務器端動態生成超鏈接Response.Write與像slugster這樣的<a>標籤說,或者可以考慮ASP:文字控制,即使它包含標記,也能準確呈現您的內容。例如

在您的標記:

<asp:literal runat="server" id="MyLiteral" /> 

在您的代碼:

string myHTMLFragment; 

myHTMLFragment = "Hello. I am a link pointing to <a href="http:stackoverflow.com">StackOverflow</a>"; 

MyLiteral.Text = myHTMLFragment;