Frage

Ich versuche, ein "Benutzerkontrollmenü" zu erstellen, in dem Links zu den UserControls einer Seite oben auf der Seite platziert werden. Auf diese Weise kann ich mehrere UserControls auf eine Seite setzen und dem Benutzer zu diesem Abschnitt der Seite springen, ohne so viel zu scrollen. Dazu stecke ich jede Usercontrol in einen Ordner (UserControls) und gab jeder Kontrolle eine Beschreibung Eigenschaft (<%@ Control Language="C#" Description = "Vehicles" .... %>).

Meine Frage ist, wie ich dynamisch auf diese Beschreibung zugreifen kann. Ich möchte diese Beschreibung als Link in meinem Menü verwenden. Bisher habe ich ein Foreach auf meiner Seite, das in der ControlCollection nach einer Steuerung des ASP.UserControls -Typs schaut. Wenn es so ist, würde ich davon ausgehen, dass ich auf seine Attribute zugreifen und diese Beschreibungseigenschaft greifen könnte. Wie kann ich das machen? (Ich bin auch offen für eine bessere Möglichkeit, mein "Benutzerkontrollmenü" zu erreichen, aber vielleicht das ist eine andere Frage.) Soll ich verwenden ((System.Web.UI.UserControl)mydynamiccontrol).Attributes.Keys?

War es hilfreich?

Lösung

Sie können die Sammlung itererieren und entweder einen Schalter oder einige wenn Anweisungen durchführen

Ich würde darauf hinweisen, dass Sie eine Schnittstelle oder eine abstrakte Basisklasse für alle Benutzersteuerungen haben:

public abstract class MyBaseClass : UserControl
{
  public abstract string MyDescription {get;}
}

public MyUserControlA : MyBaseClass
{
  public string MyDescription {get {return "my description";}}
}

public MyUserControlB : MyBaseClass
{
  public string MyDescription {get {return "my other description";}}
}

Dann können Sie sie wie Sie überfahren:

foreach ...
if (mydynamiccontrol is MyBaseClass)
{
    Response.Write(((MyBaseClass)mydynamiccontrol).MyDescription);
}

Hoffe das hilft

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top