Creación de enlaces en los que se puede hacer clic en tiempo de ejecución del formulario web c # aspx
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
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:
- se compilará el marcado (asp: HyperLink).
- 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;