2009-11-30 48 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;