2012-03-24 6 views
0

Gibt es eine Möglichkeit, direkt auf ein Feld der Klasse in der Aspx-Seite zuzugreifen?ASP.NET-Ausdruck: Zugreifen auf die Eigenschaft einer Klasse

Ich habe dies versucht:

In der aspx Seite, die ich hinzugefügt haben:

<form id="LoginForm" runat="server">  
    <asp:Label Text='<%# Eval("Test") %>' runat="server" ID="jym" /> 
</form>   

und im Backend-Klasse von dieser Seite habe ich eine Eigenschaft als deklariert:

private string test; 
public string Test { 
    get { 
     return test; 
    } 
    set { 
     test = value; 
    } 
} 

Diese Eigenschaft wird in Page_Load() wie folgt initialisiert: Test = "JYM";

Das Problem ist, dass ich diesen Wert im Browser nicht sehen kann. Das Tag wird in <span/> gerendert, aber ohne Inhalt.

Was mache ich falsch?

Antwort

2

Rufen Sie Page.DataBind() in Page_Load() an?

Sie verwenden den Datenbindungsoperator in Ihrem integrierten Codeblock. Die Werte, die Sie an das Steuerelement binden, werden nur angezeigt, nachdem Sie DataBind() von dem Steuerelement oder der Seite (die es für jedes Steuerelement auf der Seite dann aufrufen) aufgerufen haben.

Wenn Sie nur einen Wert an dieses einzelne Steuerelement binden möchten, können Sie einfach jym.DataBind() aufrufen.

Ich würde jedoch empfehlen, einen aussagekräftigeren Namen (ID) für das Label-Steuerelement zu verwenden, damit es klarer im Code darüber ist, was datengebunden ist.

Weitere Details finden Sie unter this page.

UPDATE (zusätzliche Informationen von OP in Kommentar angefordert)

So haben Sie 3 Möglichkeiten:

1. Anruf DataBind(), wie oben vorgeschlagen.

2. Verwenden Sie kein serverseitiges Steuerelement für das Etikett. Gerade einfache HTML verwenden und dann können Sie die folgende Syntax verwenden:

<p><%= Test %></p> 

3. den Wert des Labels im Code hinter Set. Zum Beispiel in Ihre Seite zu laden Sie haben die folgende könnten:

protected void Page_Load(object sender, EventArgs e) 
{ 
    jym.Text = Test; 
} 
+0

Danke für Ihre Antwort. Ja, ich verwende keine Datenbindung oder keine iterierbare ASP-Komponente. Ich bin nur bereit, auf eine private Eigenschaft von der Seite zuzugreifen. –

+0

@TapasBose aktualisiert – Robbie

+0

Vielen Dank. Ich muss 'this.DataBind();' nach dem Festlegen des Werts für die Eigenschaft aufrufen. Ich kann darauf einfach zugreifen durch '' oder von JavaScript als: '$ (Dokument).bereit (function() { alert ('<%# Test %>'); }); ' –

-2

Möglicherweise möchten Sie <% = This.Test%> verwenden. Sie können dies auch tun.jym.Text = Test; im Seitenladen evt.

+0

Dies wird nicht funktionieren auf einem Server-Seite Steuerung wie ' Robbie

+0

Sie haben Recht: $ .. – marspzb