Wie mache ich meine ASP.NET-Server die Kontrolle übernehmen einen eingebetteten Codeblock als Eigenschaftswert?

StackOverflow https://stackoverflow.com/questions/387167

Frage

Ich habe ein benutzerdefiniertes Server-Steuerelement mit einer Eigenschaft des Titels. Wenn die Steuerung verwendet wird, würde Ich mag den Wert des Titels in der Aspx-Seite setzen wie folgt:

<cc1:customControl runat="server" Title='<%= PagePropertyValue%>' >
more content
</cc1:customControl>

Wenn ich das tut, aber ich bin das genaue String bekommen <% = PagePropertyValue%> eher angezeigt wird, als der Wert der Eigenschaft, die ich sehen möchte.

So, nachdem die Datenbindung Ausdruck versuchen (wie unten vorgeschlagen). Ich habe nicht den Stringliteral, die schlecht aussah, aber ich habe nichts anderes entweder bekommen.

<cc1:customControl runat="server" Title='<%# PagePropertyValue%>' >
more content
</cc1:customControl>

Was muss ich tun, um meine benutzerdefinierte Steuerung tun, diese Art von Wert zu nehmen? Oder gibt es etwas, das ich auf der Seite tun muß.

War es hilfreich?

Lösung

Sie kann nicht. <% =%> Wird die Zeichenfolge direkt an den Antwort-Stream schreiben, die passieren, nachdem die Server-Steuerung aufgebaut ist. Siehe diesen Beitrag für eine Erklärung.

So ist es entweder Code-Behind oder <% # + Datenbindung als Zachary vermuten läßt.

Andere Tipps

Als Followup auf meine eigene Frage, habe ich entdeckt, dass das, was ich wirklich wollte, war ASP.NET-Ausdrücke zu verwenden, mit der <% $ Syntax, da das, was ich wollte, war in lokalisierten Inhalt tun setzen.

Dies kann mit scheinbar ohne zusätzliche Handhabung auf der Server Steuerseite durchgeführt werden.

<cc1:customControl runat="server" Title='<%$ Resouces: ResourceFile, ContentKey %>' >
more content and controls
</cc1:customControl>

Das funktioniert ganz gut.

Versuchen Sie Databinding Syntax: <%# PagePropertyValue %>

Für den bind Eigenschaftswert korrekt arbeiten, wie vorgeschlagen, müssen Sie dies in der aspx oder ascx-Datei:

<cc1:customControl runat="server" Title='<%# PagePropertyValue %>' >
more content
</cc1:customControl>

Sie müssen dann tatsächlich Daten in Ihrer Seite binden weichen Sie diese in Dir Code hinter Datei hinzufügen müssen (Code in C #)

protected void Page_Load(object sender, EventArgs e)
{
    DataBind();
}

Auf diese Weise wird es die Daten in Ihrem ascx oder aspx Datei binden.

Beachten Sie, dass dies bestimmte Attribute zu steuern. Bei der Verwendung des <% = Syntax außerhalb Kontrollattribute irgendwo sonst auf der Seite bedeuten die Syntax wie erwartet funktioniert. Also das              <% = GetCapitalUserName ()%>      wäre die richtige Methode aufrufen und das Ergebnis des Aufrufs in der Seite injizieren.

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