Aquí podría ser tu PUBLICIDAD


Código en línea en la propiedad de formulario web

votos
3

¿Por qué esto no muestra la fecha / hora cuando se procesa?

<asp:Label runat=server ID=test Text=<%= DateTime.Now.ToString() %> ></asp:Label>

¿Hay alguna manera de hacer funcionar esto?

Publicado el 12/03/2009 a las 16:47
fuente por usuario chief7
En otros idiomas...        العربية       

6 respuestas

votos
4

Los controles del servidor Asp.net no funcionan bien con <% =, en su lugar puedes hacer:

<span><%= DateTime.Now.ToString() %></span>

PD. alternativamente, puede establecer el texto de la etiqueta en el código subyacente. Podría funcionar para su escenario configurarlo en PreRenderComplete.

Respondida el 12/03/2009 a las 04:52
fuente por usuario eglasius


Aquí podría ser tu PUBLICIDAD


votos
3

No estoy seguro de si tiene un código detrás del archivo, pero si realmente necesita establecer la Textpropiedad de la etiqueta en el formato .aspx, puede agregar el siguiente código a la página:

<script runat="server">
    protected override void OnPreLoad(EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            this.test.Text = DateTime.Now.ToString();
            base.OnPreLoad(e);
        }
    }
</script>

De esta forma puede mantener el estado del control de etiqueta en la devolución de datos.

Respondida el 12/03/2009 a las 06:04
fuente por usuario Kev

votos
1

Poner el código en línea dentro de la etiqueta de la etiqueta de la siguiente manera,

< asp:Label ID="Lbl" runat="server" Text="">
<%= DateTime.Now.ToString() %>
< /asp:Label>
Respondida el 07/11/2012 a las 01:03
fuente por usuario Zee

votos
1

La forma más sencilla de hacerlo funcionar sería usar una expresión de enlace de datos en lugar del bloque de procesamiento de código ...

<asp:Label runat="server" ID="test" Text="<%# DateTime.Now.ToString() %>" ></asp:Label>

Ahora la propiedad Text se establecerá cada vez que se llame a Page.DataBind (), por lo que en el código subyacente querrá algo así como

protected override void OnPreRender(EventArgs e)
{
    if (!Page.IsPostBack)
    {
        DataBind();
    }

   base.OnPreRender(e);
}  
Respondida el 12/03/2009 a las 06:13
fuente por usuario stevemegson

votos
0

El verdadero problema aquí es que necesito establecer la propiedad de un WebControl con código en la página de marcado. La única forma que he encontrado para hacer esto es poner todo el control en un bloque de código. No es elegante o sugerido, pero cuando todo lo demás falla, esto funcionará.

    <%
        var stringBuilder = new StringBuilder();
        var stringWriter = new StringWriter(stringBuilder);
        var htmlWriter = new HtmlTextWriter(stringWriter);
        var label = new Label { Text = DateTime.Now.ToString() };
        label.RenderControl(htmlWriter);
        Response.Write(stringBuilder.ToString());
     %>

Pero esto no funcionará si necesita el control para mantener el estado.

ACTUALIZAR:

Después de investigar la respuesta de Kev, encontré una solución aún mejor. No tengo un código detrás (es una página de MVC) pero todavía puede hacer referencia a un control en la página a través de un bloque de código, por lo que mi nueva solución es la siguiente. Nota: primero debe colocar el bloque de código para que funcione.

 <%
    lblTest.Text = DateTime.Now.ToString();
 %>
<asp:label runat="server" ID="lblTest" />

Gracias por la inspiración Kev!

Respondida el 12/03/2009 a las 05:07
fuente por usuario chief7

votos
0

Bueno, las etiquetas asp son renderizadas. Deberá establecer la propiedad en tiempo de ejecución. o simplemente haz el <%= DateTime.Now.ToString() %>.

Respondida el 12/03/2009 a las 04:49
fuente por usuario Daniel A. White