2010-02-08 10 views
7

Ich schreibe ASP.NET benutzerdefinierte Steuerelement, und ich möchte, dass es einige Eigenschaften, die nur aus dem Code während der Laufzeit angezeigt werden sollte sichtbar sein - ich meine, diese Eigenschaften sollten nicht sichtbar sein, sowohl in einem Designer und in einem Aspx-Code der Seite, die dieses Steuerelement enthält. Ich habe versucht, folgende Attribute zu verwenden:Wie Sie die Eigenschaft des benutzerdefinierten ASP.NET-Steuerelements in aspx-Seite ausblenden?

[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
[Browsable(false)]
public List<Item> SomeData { ... }

aber leider ist diese Eigenschaft noch sichtbar in einer Intellisense Combobox, wenn aspx Seite bearbeiten. Ist es möglich, diese Eigenschaft neben dem serverseitigen Code überall zu verbergen?

Antwort

12

Dies sollte den Trick:

//Hide from Designer Property Grid 
[Browsable(false)] 
// Hide from VS.NET Code Editor IntelliSense 
[EditorBrowsable(EditorBrowsableState.Never)] 
// Not Serialized in Designer Source code "HTML view" 
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] 
public List<Item> SomeData { ... } 
2

Amur Antwort auf jeden Fall funktioniert, aber ich möchte hinzufügen, dass manchmal auch nach den Attributen der Anwendung der Intellisense noch die Eigenschaften zeigt. Dies ist darauf zurückzuführen, dass Visual Studio die Intellisense-Dateien zwischenspeichert. Wenn Sie dasselbe Projekt auf einem anderen Computer erstellen, werden die Eigenschaften nicht angezeigt. Wenn das Ihnen wirklich Probleme bereitet, können Sie den Cache löschen, indem Sie alle Dateien im Ordner "C: \ Dokumente und Einstellungen \ [YOUR_USER_NAME] \ Anwendungsdaten \ Microsoft \ VisualStudio \ 10.0 \ ReflectedSchemas" löschen.