Forums Neueste Beiträge
 

Aus Code-Behind auf resourceKey zugreifen

17/09/2007 - 07:34 von Patrick Finger | Report spam
Hallo Group

Mein Kunde soll sàmtliche Texte der Applikation online pflegen können.
Die Resourcen werden aus einer Datenbank gelesen. Es gibt eine
Edit-Seite, wo alle Texte online gepflegt werden können.

Nun möchte ich in einem Edit-Mode jedem Control, welches seinen Text aus
der Datenbank bezieht einen dynamischen Link danebensetzen.

Das Problem, die Ersetzungen sind jeweils schon erfolgt und ich komme
nicht mehr auf den resourceKey und den classKey.

vereinfachtes Beispiel, Problem bei mit !-markierten Zeilen

In der aspx:
<asp:Label ID="lbl_dyn" runat="server" Text="<%$ Resources:Messages,
sayHello %>"></asp:Label>

In der codebehind:

Label lab = this.lbl_dyn;
Control parent = lab.Parent;
! String sClassKey = lab.Text.classKey;
! String sResourceKey = lab.Text.resourceKey;
HyperLink hlnk = new HyperLink();
hlnk.Text = "Edit Text";
hlnk.NavigateUrl = "ResourceEdit.aspx?class=" + sClassKey + "?key=" +
sResourceKey;
parent.Controls.AddAt(parent.Controls.IndexOf(lab), hlnk);

Wàr schon cool wenn das gienge...
Danke und Gruss

Patrick
 

Lesen sie die antworten

#1 Samaschke, Karsten
21/09/2007 - 15:35 | Warnen spam
Moinsens,

Mein Kunde soll sàmtliche Texte der Applikation online pflegen können.
Die Resourcen werden aus einer Datenbank gelesen. Es gibt eine
Edit-Seite, wo alle Texte online gepflegt werden können.

Nun möchte ich in einem Edit-Mode jedem Control, welches seinen Text aus
der Datenbank bezieht einen dynamischen Link danebensetzen.



Öko, soweit verstehe ich es noch.

Das Problem, die Ersetzungen sind jeweils schon erfolgt und ich komme
nicht mehr auf den resourceKey und den classKey.



Na, dann schreibe Dir doch ein eigenes Label-Control. Dort kannst Du
alle benötigten Eigenschaften vergeben. Beim OnPreRender kannst Du dann
die eigentliche Ausgabe vorbereiten. Und um an den Inhalt der
gewünschten Ressource zu kommen, verwendest Du
HttpContext.GetGlobalResourceObject().

Sieht etwa so aus (nicht getestet):

public class MyLabel : PlaceHolder
{

public string ResourceKey
{
get { ... }
set { ... }
}

public string ResourceClass
{
get { ... }
set { ... }
}

/// <summary>
/// Erzeugt die untergeordneten Steuerelemente
/// </summar>
protected override void OnPreRender(EventArgs e)
{
Label output = new Label();
output.Text HttpContext.GetGlobalResourceObject(
ResourceClass, ResourceKey) as string;

this.Controls.Add(output);
}
}

Dein eigenes Label registrierst Du dann noch in der Seite, und gut
isses. Zugriff dann per

<foo:MyLabel runat="server" ResourceKey="bla" ResourceClass="Blabla" />

Mit freundlichen Gruessen / Best regards

Karsten Samaschke
IT-Entwicklung, IT-Beratung, IT-Training
Web: http://www.ksamaschke.de
Blog: http://www.karsan.de
Lesen: http://www.xmldotnet.de

Ähnliche fragen