Come faccio a fare il mio controllo server ASP.NET prendere un blocco di codice incorporato come un valore di proprietà?

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

Domanda

Ho un controllo server personalizzato con una proprietà del titolo. Quando si utilizza il controllo, mi piacerebbe impostare il valore del titolo nella pagina aspx in questo modo:

<cc1:customControl runat="server" Title='<%= PagePropertyValue%>' >
more content
</cc1:customControl>

Quando faccio questo, però, io sono sempre l'esatto Stringa <% = PagePropertyValue%> la visualizzazione piuttosto che il valore della proprietà che mi piacerebbe vedere.

Così, dopo aver provato l'espressione di associazione dati (come suggerito qui di seguito). Non capisco il valore letterale stringa che sembrava male, ma non ho ricevuto niente altro neanche.

<cc1:customControl runat="server" Title='<%# PagePropertyValue%>' >
more content
</cc1:customControl>

Che cosa devo fare per il mio controllo personalizzato di prendere questo tipo di valore? O c'è qualcosa che devo fare per la pagina.

È stato utile?

Soluzione

Non potete. <% =%> Scriverà la stringa direttamente alla risposta-stream, che avviene dopo il controllo server è costruito. Vedi questo post per una spiegazione.

Così la sua sia codebehind, o <% # + associazione dati come Zachary suggerisce.

Altri suggerimenti

Come un follow-up alla mia domanda, ho scoperto che quello che volevo era quello di utilizzare ASP.NET espressioni utilizzando la

Questo può essere fatto con apparentemente senza movimentazione extra sul lato controllo server.

<cc1:customControl runat="server" Title='<%$ Resouces: ResourceFile, ContentKey %>' >
more content and controls
</cc1:customControl>

Questo funziona bene.

Prova a usare la sintassi di associazione dati: <%# PagePropertyValue %>

Per il valore della proprietà si legano a funzionare correttamente come suggerito, si avrà questo nel file aspx o ascx:

<cc1:customControl runat="server" Title='<%# PagePropertyValue %>' >
more content
</cc1:customControl>

Sarà quindi necessario per legare in realtà i dati nella tua pagina wich è necessario aggiungere questo in voi codice al file (codice in C #)

protected void Page_Load(object sender, EventArgs e)
{
    DataBind();
}

In questo modo sarà associare i dati nel file ascx o aspx.

Si noti che questo è specifico per controllare gli attributi. Quando si utilizza il <% = sintassi fuori attributi di controllo che significa in qualsiasi altra parte della pagina di sintassi funziona come previsto. Così questo              <% = GetCapitalUserName ()%>      avrebbe chiamato il metodo corretto e iniettare il risultato della chiamata nella pagina.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top