Ich weiß, dass ich in einer benutzerdefinierten Anzeige- oder Editiervorlage Metadaten über das Modell erhalten kann über ViewData.ModelMetadata
die über Eigenschaften verfügt, die angeben, ob bestimmte Metadatenattribute für die Eigenschaft definiert wurden, wie z. B. IsRequired
, DisplayName
, und so weiter. Aber gibt es irgendeine Möglichkeit, auf benutzerdefinierte Metadaten zuzugreifen, die ich der Eigenschaft über benutzerdefinierte Attribute hinzugefügt habe?
Nehmen wir zum Beispiel an, dass ich in meiner Ansicht eine Eigenschaft wie diese habe:
[UIHint("Whizbang")]
[SomeAttribute("foobar")]
public string LeftWhizbang { get; set; }
Und ich habe eine benutzerdefinierte Anzeigevorlage namens Whizbang.cshtml
mit dem folgenden Inhalt:
@model string
Left Whizbang Value: @Model
Ich möchte gerne feststellen können, ob die Eigenschaft LeftWhizbang
ist mit dem Attribut SomeAttribute
und, falls ja, möchte ich auf die Attribute Message
Eigenschaft (sagen wir), nämlich den Wert "foobar".
Ich würde gerne so etwas in meiner Vorlage machen können:
@model string
Left Whizbang Value: @Model
@{
SomeAttributeAttribute attr = ViewData.ModelMetadata.GetAttributes(...);
if (attr != null)
{
<text>... and the value is @attr.Message</text>
}
}
Ist dies überhaupt möglich, oder befinde ich mich in einer Sackgasse?