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

发布于 2024-08-13 03:40:30 字数 495 浏览 2 评论 0原文

我在 c# 中使用 response.write 创建 asp 链接,相同的超链接代码在直接插入到 asp 代码中时可以顺利工作,但是当我将其复制/粘贴到 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>");

,并且变成了黑色文本

I'm creating asp links using response.write in c#, the same HyperLink code works smoothly when inserted directly in the asp code, but when i copy/paste it to the response.write("...") it appears as an unclickable black text.

Am i forgetting something?

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

this exact code above thrown in the aspx source works greatly

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

and this turns into a black text

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

人│生佛魔见 2024-08-20 03:40:30

您不能像这样将 asp:Hyperlink 标记直接插入到响应流中,因为超链接实际上是一个需要“呈现”自身的控件(如果您将其替换为普通的“a”锚/超链接标记,它将正常工作) 。

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

You cannot insert an asp:Hyperlink tag directly into the response stream like that, as the hyperlink is actually a control that needs to "render" itself (if you replaced that with a normal "a" anchor/hyperlink tag it would work fine).

Instead you need to either create the control and add it to the page programatically, or maybe use a repeater control to render the anchors.

吲‖鸣 2024-08-20 03:40:30

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

  1. 标记(asp:HyperLink)将被编译。
  2. Response.Write("asp:HyperLink") 不会。它将按原样呈现文本,当然您不会看到任何链接,事实上您应该看到标签 asp:HyperLink 内的文本(包括 HTML 源代码中的标签本身)。

如果您想以匿名方式创建链接,可以使用下面的代码片段来完成:

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

You are trying to do totally different things:

  1. the markup (asp:HyperLink) will be compiled.
  2. the Response.Write("asp:HyperLink") will NOT. It will render text as is, and of course you wont't see any link, in fact you should see the text inside the tag asp:HyperLink (inluding the tag itself in the HTML source).

If you want to create a link dunamically you can do it using code snippets below:

<asp:HyperLink ID='HyperLink1' runat='server' NavigateUrl='<%= GetDynamicUrl() %>'> CLICK HERE </asp:HyperLink>
/// Or plain HTML
<a href="<%= GetDynamicUrl()"><%= GetTheLinkText() %></a>
单身情人 2024-08-20 03:40:30

如果您想像这样在服务器端动态生成超链接,您可以像 slugster 所说的那样使用带有 标记的 Response.Write,或者考虑使用 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; 

If you want to generate a hyperlink dynamically on the server-side like this, you can either use Response.Write with an <a> tag like slugster says, or alternatively consider the ASP:Literal control which renders exactly what you give it even if it contains markup e.g.

In your markup:

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

In your code:

string myHTMLFragment;

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

MyLiteral.Text = myHTMLFragment; 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文