Cod Inline pe formular web de proprietate

voturi
3

De ce nu face acest lucru afișa data / ora când prestate?

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

Oricum este acolo pentru a face acest lucru?

Întrebat 12/03/2009 la 14:47
sursa de către utilizator
În alte limbi...                            


6 răspunsuri

voturi
0

Ei bine , etichetele sunt redate asp. Va trebui să setați proprietatea în timpul rulării. sau doar PROCEDEAZĂ <%= DateTime.Now.ToString() %>.

Publicat 12/03/2009 la 14:49
sursa de către utilizator

voturi
4

control de tip server Asp.net nu joacă bine cu <% =, în schimb, puteți face:

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

Ps. ați putea stabili în mod alternativ textul etichetei pe cod în urmă. S-ar putea lucra pentru scenariul dumneavoastră să-l setați pe PreRenderComplete.

Publicat 12/03/2009 la 14:52
sursa de către utilizator

voturi
0

Problema reală aici, deși este am nevoie pentru a seta proprietatea unui WebControl cu ​​codul de pe pagina de marcare. Singurul mod în care l-am găsit de a face acest lucru este pus întreg controlul într-un bloc de cod. Sa nu elegant, sau a sugerat, dar atunci când tot nu va funcționa.

    <%
        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());
     %>

Dar acest lucru nu va funcționa dacă aveți nevoie de control pentru a menține starea.

ACTUALIZAȚI:

După cercetarea răspunsul lui Kev am găsit o soluție mai bună. Nu am un cod în spatele (său o pagină MVC), dar aveți posibilitatea de referință în continuare un control pe pagina printr-un bloc de cod astfel încât noua mea soluție este următoarea. Notă - Trebuie să plasați mai întâi blocul de cod pentru ca aceasta să funcționeze.

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

Vă mulțumim pentru Kev inspirație!

Publicat 12/03/2009 la 15:07
sursa de către utilizator

voturi
3

Nu sunt sigur dacă ai un cod în spatele fișier, dar dacă într-adevăr nevoie pentru a seta eticheta de Textproprietate în markup .aspx ai putea adăuga următorul cod la pagina:

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

În acest fel puteți menține starea de control etichetă pe postback.

Publicat 12/03/2009 la 16:04
sursa de către utilizator

voturi
1

Cel mai simplu mod de a face acest lucru ar fi de a utiliza o expresie de legare a datelor în locul codului de randare bloc ...

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

Acum, proprietatea Text va fi setat de fiecare dată când Page.DataBind () este numit, astfel încât în ​​codul-spatele tau vei dori ceva de genul

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

   base.OnPreRender(e);
}  
Publicat 12/03/2009 la 16:13
sursa de către utilizator

voturi
1

Pune codul de linie în interiorul tag-ul etichetei de mai jos,

< asp:Label ID="Lbl" runat="server" Text="">
<%= DateTime.Now.ToString() %>
< /asp:Label>
Publicat 07/11/2012 la 10:03
sursa de către utilizator

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more