2009-04-24 6 views
1

Ich möchte den Consumer eines Steuerelements zwingen, einer Eigenschaft einen Wert zuzuweisen, wenn das Steuerelement auf einer Seite platziert wird.Flagsteuerungseigenschaften wie in der Entwurfsansicht erforderlich

In Visual Studio, wenn Sie ein < img> -Tag ohne Attribute SRC oder ALT auf einem Steuer Benutzer zu erstellen, wird es unterstrichen, dass SRC und ALT sagen Attribute sind erforderlich. Ich nehme an, dies ist nur eine spezielle Behandlung des Tags durch den Editor, aber gibt es eine Möglichkeit, ein ähnliches Verhalten für Steuerelemente zu definieren?

Wenn die Kontrolle hatte eine Eigenschaft wie folgt definiert:

public object AProperty 
{ 
    get 
    { 
     if (ViewState["AProperty"] == null) 
     { 
      throw new Exception("AProperty is a required property of this control"); 
     } 
     return ViewState["AProperty"]; 
    } 
    set { ViewState["AProperty"] = value; } 
} 

Gibt es eine Möglichkeit, ein benutzerdefiniertes Attribut oder etwas anderes, das würde Flagge im Designer zu benutzen?

Antwort

4

Sie könnten das Microsoft.Build.Framework.Required-Attribut verwenden. Dies würde erfordern, dass zum Build-Zeitpunkt ein Wert gesetzt wird oder der Build mit einer Meldung fehlschlägt, die anzeigt, dass die Eigenschaft keinen Wert hat.

Ich glaube nicht, dass es ein Attribut gibt, um anzuzeigen, dass ein bestimmtes Tag in einem Serversteuerelement enthalten sein muss (oder zumindest sehe ich kein solches Attribut in der System.Web.UI.HtmlControl.Image-Klasse). Ich glaube, dass die kleinen Unterstreichungen Teil der HTML-Validierung der IDE sind.

Sie können immer ein benutzerdefiniertes Attribut erstellen, die

fehlt
+0

Ja das ist, was ich dachte. Keine Notwendigkeit, aber es wäre nett gewesen. Ich denke, ich werde ein ToolboxData-Attribut mit der Eigenschaft hinzufügen, so dass es sofort da ist. –

0

Während Microsoft.Build.Framework.Required wahrscheinlich hier die beste Antwort, die auf diese stolpern für andere ist eine Warnung, wenn eine Eigenschaft wirft und können nicht .NET 4.0 können Sie auch diese Methode verwenden:

http://forums.asp.net/t/1238319.aspx

Verwandte Themen