Creación de enlaces en los que se puede hacer clic en tiempo de ejecución del formulario web c # aspx

StackOverflow https://stackoverflow.com/questions/1819303

Pregunta

Estoy creando enlaces asp usando response.write en c #, el mismo código HyperLink funciona sin problemas cuando se inserta directamente en el código asp, pero cuando lo copio / pego en response.write ( " ... ") aparece como un texto negro no cliqueable.

¿Estoy olvidando algo?

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

este código exacto arriba lanzado en la fuente aspx funciona en gran medida

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

y esto se convierte en un texto negro

¿Fue útil?

Solución

No puede insertar una etiqueta asp: Hyperlink directamente en el flujo de respuesta de esa manera, ya que el hipervínculo es en realidad un control que necesita " render " en sí mismo (si reemplaza eso con una etiqueta " a " ancla / hipervínculo normal, funcionaría bien).

En su lugar, necesita crear el control y agregarlo a la página mediante programación, o tal vez usar un control repetidor para representar los anclajes.

Otros consejos

Estás intentando hacer cosas totalmente diferentes:

  1. se compilará el marcado (asp: HyperLink).
  2. la Response.Write (" asp: HyperLink ") NO lo hará. Representará el texto tal cual y, por supuesto, no verá ningún enlace, de hecho, debería ver el texto dentro de la etiqueta asp: HyperLink (incluida la etiqueta en la fuente HTML).

Si desea crear un enlace de forma dinámica, puede hacerlo utilizando los fragmentos de código a continuación:

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

Si desea generar un hipervínculo dinámicamente en el lado del servidor de esta manera, puede usar Response.Write con una etiqueta <a> como dice slugster, o considerar alternativamente el ASP: control literal que representa exactamente lo que le da incluso si contiene marcado, por ejemplo,

En su marcado:

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

En su código:

string myHTMLFragment;

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

MyLiteral.Text = myHTMLFragment; 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top