2012-04-03 6 views
3

habe ich entdeckt, dass es möglich ist, Ressourcen-Strings mit variablen Informationen mit string.format zu füllen, siehe unten:Etikett/Literal-Steuerelement mit formatierten Textfeld

String.Format(Resources.Temp.TempString, Resources.Contact.PhoneSales) 

Ich kann dies mit auf meiner Seite angezeigt werden:

In einigen Fällen habe ich ein Label oder Literal (oder ein beliebiges Steuerelement), das Inhalt dynamisch verbergen oder anzeigen kann. Normalerweise würde ich die Verwendung füllen:

<asp:Literal ID="Literal1" Text="<%$ Resources:Temp,ContactUs %>" runat="server" /> 

jetzt ich während noch mit Kontrollen die gleiche Funktionalität String.Format möchte. Ich fand Display value of Resource without Label or Literal control, aber das funktioniert nicht wirklich für mich, es schreibt nur '<% = GetGlobalResourceObject ("Nachrichten", "ThankYouLabel")%>' auf der Seite (nicht der Inhalt, diese tatsächliche Zeichenfolge).

UPDATE:

ich eine Lösung gefunden haben, die mit einigen Kontrollen funktioniert:

<asp:Label runat="server" ID="temp"><%= String.Format(Resources.Temp.TempString, Resources.Contact.PhoneSales) %></asp:Label> 

Dies funktioniert jedoch nicht für Wörtliche Kontrollen funktioniert, da sie keine untergeordneten Steuerelemente ermöglichen. Ich würde es vorziehen, weiterhin Literale zu verwenden, da sie hinsichtlich des generierten Codes am saubersten sind, also immer noch nach einer Lösung suchen.

+1

http://stackoverflow.com/questions/9382559/asp-net-expressions-inline-tag-with-string-format/9383420 –

+3

Warum fügen Sie nicht einfach 'Literal1.Text = GetGlobalResourceObject (" Nachrichten " , "ThankYouLabel") 'in Ihrer Codebehind-Datei? – Candide

+0

Ingenu - Ich dachte darüber nach. Ich habe es nicht ausprobiert, aber ich schätze, es wird funktionieren. Allerdings bin ich ein bisschen gegen die Idee, den Code dahinter zu verwenden, nicht sicher, warum, was mit der Speicherung von Textdaten und der Programmierung zu tun hat, vielleicht getrennt (obwohl das, wonach ich frage, Programmierung im Frontend ist). – Chris

Antwort

0

Um mein Problem zu lösen, habe ich einen zweiten Blick darauf geworfen, wie ich Inhalte anzeigen kann und festgestellt habe, dass die Literale und Labels oft anstelle von reinem HTML-Code weggelassen werden können. Ich kann dann meine bevorzugte Methode <%= ... %> verwenden, um Inhalt anzuzeigen.

2

asp:Literal unterstützt nicht <%= %> Konstrukt, und erlaubt keine untergeordneten Steuerelemente (ich meine etwas wie <asp:Literal runat="server"><%= ... %></asp:Literal>).

Aber wenn Sie Daten verwenden, verbindlich, könnte Ihre verwenden data-binding expresions<%# ... %>:

<asp:Label runat="server" Text="<%# string.Format(...) %>"></asp:Label> 

Um diese Arbeit zu machen, sollten Sie sicherstellen, dass entweder implizite oder explizite Daten für Ihre Kontrollen Bindung verwendet wird. Ansonsten gibt das Steuerelement ohne Bindung aus.

Diese Problemumgehung ist ein wenig komplex. Erwägen Sie, entweder asp:Label Steuerelement zu verwenden, oder legen Sie die -Eigenschaft aus dem Code dahinter.

0

Sie könnten eine asp:PlaceHolder Steuerung anstelle einer Literal verwenden.
PlaceHolders kann untergeordnete Steuerelemente enthalten; sie unterstützen auch <%= … %>-style "displaying expressions".

Verwandte Themen