在c#aspx webform的运行时创建可点击链接

时间:2009-11-30 11:37:15

标签: c# asp.net vb.net runtime hyperlink

我正在使用c#中的 response.write 创建asp链接,当直接插入到asp代码中时,相同的HyperLink代码可以顺利运行,但是当我将其复制/粘贴到response.write时( “......”)它看起来像一个无法点击的黑色文字。

我忘记了什么吗?

<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>");

这会变成黑色文字

3 个答案:

答案 0 :(得分:2)

你不能将asp:Hyperlink标签直接插入到响应流中,因为超链接实际上是一个需要“渲染”自身的控件(如果你用普通的“a”锚/超链接标签替换它,它会工作得很好。

相反,您需要创建控件并以编程方式将其添加到页面,或者使用转发器控件来渲染锚点。

答案 1 :(得分:0)

你正在尝试完全不同的事情:

  1. 将编译标记(asp:HyperLink)。
  2. Response.Write(“asp:HyperLink”)不会。它会按原样呈现文本,当然你看不到任何链接,实际上你应该看到标签内的文字:asp:HyperLink(在HTML源代码中包含标签本身)。
  3. 如果您想以动态方式创建链接,可以使用以下代码段进行操作:

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

答案 2 :(得分:0)

如果你想像这样在服务器端动态生成超链接,你可以使用带有<a>标签的Response.Write,如slugster所说,或者考虑ASP:Literal控件,它实际上是什么你给它,即使它包含标记,例如

在你的标记中:

<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;