ASP.NET -> Aus Variable in Sourcedatei zugreifen
Pete
- sonstiges
0 Harlequin0 Pete0 Frank (no reg)0 Pete
Hallo
In meiner Default.aspx habe ich einen RequiredFieldValidator. Darin möchte ich die ErrorMessage auf einen Wert setzen, der in der Konstante ERROR_VALIDATION_REQUIRED_FIELD in Default.aspx.cs liegt. Wie komme ich an diesen Wert? Ich weiss das hier nicht DAS ASP Forum ist, aber sicher kann mir trotzdem jemand helfen.
Cheers
Yerf!
In meiner Default.aspx habe ich einen RequiredFieldValidator. Darin möchte ich die ErrorMessage auf einen Wert setzen, der in der Konstante ERROR_VALIDATION_REQUIRED_FIELD in Default.aspx.cs liegt. Wie komme ich an diesen Wert?
Einfach drauf zugreifen. Zur Laufzeit ist beides nur ein Objekt. Die aspx ist eine abgeleitete Klasse der aspx.cs. Das heist, man kann von der aspx aus auf alles der Codedatei zugreifen, was protected oder public ist. Umgekehrt werden normalerweise die Controls als Protected Member in der Codedatei deklariert, so das man von dort aus darauf zugreifen kann.
Meine Lösung wäre es in Load (oder OnInit) die Eigenschaft des Controls entsprechend zu setzen.
Alternativ könnte man in der aspx ein Stück Code einfügen, das die Konstante dem Control zuweist. Dies etzt vorraus, das die Konstante als Protected oder Public definiert wurde. Ich selbst aber vermeide Code in der aspx-Datei und Packe alles in die aspx.cs
Gruß,
Harlequin
Einfach drauf zugreifen. Zur Laufzeit ist beides nur ein Objekt. Die aspx ist eine abgeleitete Klasse der aspx.cs.
Hehe ja so was ähnliches hab ich mir gedacht. Aber wie greife ich (syntaxmässig) darauf zu?
ErrorMessage = ?
ErrorMessage = ?
Wie greifst du denn auf das Property "ErrorMessage" deines RequiredFieldValidators zu?
Für gewöhnlich mit: Me (VB) oder this (C#) plus der instanzvariablen des Controls von innerhalb derselben Klasse
Also, z.b. this.myValidator.ErrorMessage
Auf const Konstanten greifst du normalerweise mit dem Typennamen der umgebenden Klasse und dem Konstantennamen zu, z.b.
public class MeineKonstantenKlasse
{
public const string MeineKonstante = "is wurst";
}
MeineKonstantenKlasse.MeineKonstante
Deine ASPX Seite ist eine Klasse, die u.a. in der code-behind Datei .aspx.cs definiert ist, darin wirst du auch deine Konstante deklariert haben, richtig?
Du solltest die Zuweisung der ErrorMessage in der Methode "InitializeComponent" bzw. besser in einer eigenen Methode vornehmen. Ausserdem empfiehlt sich die Verwendung von Resourcendateien bzw. Resource Satellite Assemblies anstelle von Konstanten.
Ciao, Frank
Hi
Deine ASPX Seite ist eine Klasse, die u.a. in der code-behind Datei .aspx.cs definiert ist, darin wirst du auch deine Konstante deklariert haben, richtig?
Ja genaz
Du solltest die Zuweisung der ErrorMessage in der Methode "InitializeComponent" bzw. besser in einer eigenen Methode vornehmen. Ausserdem empfiehlt sich die Verwendung von Resourcendateien bzw. Resource Satellite Assemblies anstelle von Konstanten.
Ciao, Frank
In Java zum kenne ich Resourcedateien im Zusammenhang mit zbsp. Mehrsprachigkeit, dazu habe ich in diesem Fall aber keine Ambitionen. Was für Vorteile hätte es Resourcedateien einzusetzen?
Das ich in der Code-behind-Datei auf die Konstante zugreifen kann hab ich mir im ersten Moment gar nicht überlegt, ich hätte es gerne innerhalb der aspx-datei im Tag-Attribut gemacht. Aber ich vermute das ist nicht möglich?
Hallo,
In Java zum kenne ich Resourcedateien im Zusammenhang mit zbsp.
Mehrsprachigkeit, dazu habe ich in diesem Fall aber keine Ambitionen.
Was für Vorteile hätte es Resourcedateien einzusetzen?
Resourcedateien koennen sehr gut von Web-Designern oder Content-Pflegern
bearbeitet werden, da sie selbst nach dem Deployment noch editiert werden
koennen. Das heisst, der Programmierer ist dann optimaler Weise nicht mehr
fuer die Texte verantwortlich. Des weiteren, in Hinsicht auf Multilingualitaet,
koennen sie sehr gut Externen zu Verfuegung gestellt werden, um die
Uebersetzungen zu implmentieren.
Das ich in der Code-behind-Datei auf die Konstante zugreifen kann hab ich
mir im ersten Moment gar nicht überlegt, ich hätte es gerne innerhalb der
aspx-datei im Tag-Attribut gemacht. Aber ich vermute das ist nicht möglich?
Habe gerade kein VS auf meinem Rechner, aber in der asp-Datei sollten
eigentlich auch saemtliche Attribute/Properties setzbar sein, welche sich auch
aus der Code-Behind setzen lassen koennen. Sprich, es sollte eigentlich eine
Property geben, die fuer den anzuzeigenden Text verantwortlich ist. Hast du es
mal mit "Text" oder "ErrorMessage" o.ae. probiert?
By the way ist es eigentlich gang und gebe, Properties aus der Code-Behind
heraus zu setzen.
Mit freundlichen Gruessen,
Sympathizer
Habe gerade kein VS auf meinem Rechner, aber in der asp-Datei sollten
eigentlich auch saemtliche Attribute/Properties setzbar sein, welche sich auch
aus der Code-Behind setzen lassen koennen. Sprich, es sollte eigentlich eine
Property geben, die fuer den anzuzeigenden Text verantwortlich ist. Hast
Ja eben, im asp bereich habe ich etwas a là
<asp:RequiredFieldValidator ErrorMessage="HIER GERNE DER WERT DER KONSTANTE"...
Entweder habe ich deine Antwort oder du meine Frage nicht verstanden =)
Yerf!
Ja eben, im asp bereich habe ich etwas a là
<asp:RequiredFieldValidator ErrorMessage="HIER GERNE DER WERT DER KONSTANTE"...Entweder habe ich deine Antwort oder du meine Frage nicht verstanden =)
Nein, er versucht dir nur klarzumachen, dass das der falsche Weg ist (wie ich auch schon erwähnt hatte). Programmcode gehört ind die CodeBehind-Klasse.
Wenns aber unbedingt sein muss könntest du probieren, ob die <%=KONSTANTE %> Schreibweise funktioniert. (Zum ausgeben von Text auf jeden Fall, aber ob das in Attributen von ASP-Controls auch klappt kann ich nicht sagen.)
Aber schön ist das nicht... das erinnert eher an Uralt-ASP oder PHP ;-)
Wenn du dir selbst einen Gefallen tun willst, dann packst du solche Initialisieruungen alle zusammen in eine Funktion im CodeBehind.
Gruß,
Harlequin
Yerf!
Aber schön ist das nicht... das erinnert eher an Uralt-ASP oder PHP ;-)
Wenn du dir selbst einen Gefallen tun willst, dann packst du solche Initialisieruungen alle zusammen in eine Funktion im CodeBehind.
Gruß,
Harlequin
Jupp das werde ich machen, ich komme tatsächlich vom klassischen ASP her, und hab mir daher gar nicht unbedingt überlegt das in der Code-Klasse zu handeln. Vielen Dank
Cheers Pete