Setzen Sie die Visible-Eigenschaft mit dem Server-Tag & lt;% =% & gt; in Rahmen 3.5
Arbeite ich in einem .NET Framework 4 Projekt mithilfe des server-tags wie <%=was %>, um die Sichtbarkeit von runat="server" steuert, wie die folgenden:
<div id="MyId" runat="server" visible="<%=MyVisiblePropertyOnCodeBehind %>" >
Content
</div>
Dies funktioniert auf framework 4, aber jetzt versuchen, diese auf ein Framework 3.5 Projekt-es nicht zu funktionieren scheint. Ist das ein Framework 4 nur Funktion? Gibt es eine coolsten (und .aspx-Seite) alternative zur Einstellung der Sichtbarkeit von codebehind? Ich bin mit dem hässlich:
MiId.Visible = MyVisiblePropertyOnCodeBehind
Vielen Dank im Voraus,
Tom
[BEARBEITET] - LÖSUNG:
Danke für Eure Kommentare, das macht mich versteht mein problem und die Lösung!!!
War es mein Fehler, in mehr als einer Sache.
In der VS2010-Projekt waren wir mit <%# anstelle von <%=
Auch, habe ich nicht bemerkt, dass in der VS2010-Projekt waren wir mit Seiten vererbt sich nicht von "Seite", sondern von einer CustomPage-Klasse, dass war die Bindung automatisch, ohne mich zu bemerken, und das macht mich denke, das war ein Framework 4.0-Funktion nur.
Als Sie hier erzählt, wenn Sie das folgende markup:
<div id="MyId" runat="server" visible="<%# MyVisiblePropertyOnCodeBehind %>" >
Content
</div>
können Sie damit es funktioniert, indem die folgenden, um die codebehind:
public bool MyVisiblePropertyOnCodeBehind = true;
protected void Page_Load(object sender, EventArgs e) {
DataBind();
//Or if you want only for one control, MyId.DataBind();
}
Als ich gelesen habe, diese DataBind() kann verringern die Leistung der Anwendung. Haben Sie eine Vorstellung, wie viel? Könnte dies so verstanden werden, als eine "professional" - Technik verwendet werden, bei großen Projekten, oder denken Sie, es sollte vermieden werden?
Ich Liebe die Art, es macht markup lesbar und einfach zu verstehen, in einer einzigen Ansicht, aber ich möchte nicht schuldig sein slow-code da.
InformationsquelleAutor der Frage tomasofen | 2012-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den code, den Sie geschrieben ist keine gültige syntax, die für server-tags in der ASP.NET 2.0 oder ASP.NET 4.0 runtimes. In beiden version, die versucht, zum festlegen der visible-Eigenschaft mit
<%= ... %>
in ein server-tag, das Ergebnis sollte ein parser error:Haben Sie zwei andere Optionen als nur die Einstellung der
Visible
property im codebehind oder eine<script runat="server">
tag. Die erste ist die Verwendung einer Datenbindung für dieVisible
Eigenschaft. Sie müssen rufen Sie dieDataBind()
Methode entwederMyId
oder einer übergeordneten Steuerung für den Wert gebunden zu sein.Die andere option ist, den code zu schreiben, wie folgt:
Der Nachteil dieses Ansatzes ist, dass Sie nicht in der Lage, programmgesteuert hinzufügen von Steuerelementen auf der Seite oder Steuerelement, das die den code enthält, blockiert. Wenn Sie versuchen, sollten Sie eine Fehlermeldung erhalten:
Alles, was gesagt, ich denke, nur die-Eigenschaft festlegen, die Art und Weise Sie es tun, nun ist der Weg zu gehen.
InformationsquelleAutor der Antwort rsbarro
Stellen Sie einfach eine variable auf true/false auf Ihre pageLoad-Ereignis wie dieses
Dann in der Steuerelement-Eigenschaften in der aspx-Seite, setzen Sie Ihre Sichtbarkeit über eine Eigenschaft wie
InformationsquelleAutor der Antwort Zo Has
Den ganzen Beitrag hier: http://www.aspnet-answers.com/microsoft/ASP-NET/29389067/dynamically-set-a-control-property.aspx
Und Abhilfe hier: ASP.net Inline-Ausdruck-Problem
InformationsquelleAutor der Antwort arunes
Hier ist ein weiterer Ansatz, die behauptet, die Einfachheit des Codes von deiner ursprünglichen Frage. Hier würden Sie haben, um die zu entfernen runat="server" aus dem div-tag und css "display:none" statt der "Sichtbar" - Eigenschaft. Der Nachteil dieses Ansatzes ist, dass der tag kommt noch an den browser gesendet, auch wenn es nicht sichtbar ist und die Sicht behandelt wird, auf der client-Seite.
InformationsquelleAutor der Antwort rdans