J'ai un modèle comme ci-dessous:Comment accéder C# attribut modèle au sein EditorFor
public class CreateStockcheckJobModel
{
[Engineer(true)]
public EngineerModel Engineer { get; set; }
}
Je rend la propriété Engineer
dans un View<CreateStockcheckJobModel>
en utilisant Html.EditorFor(m => m.Engineer, "EngineerEditor")
.
Comment puis-je accéder à la valeur de l'attribut Engineer
(dans ce cas, true
) dans le code de ma vue partielle (EngineerEditor.ascx
)?
Ci-dessous est mon code éditeur
<%@ Control Language="C#" Inherits="ViewUserControl<EngineerModel>" %>
<% if (PropertyImRenderingHasAttributeWithTrueBooleanValue) // What goes here?
{ %>
<p>Render one thing</p>
<% }
else
{ %>
<p>Render another thing</p>
<% } %>
Je suis au courant de la réflexion, mais je ne suis pas sûr comment l'utiliser comme l'attribut est pas ajouté à la classe EngineerModel
il est ajouté à la Engineer
propriété de la classe CreateStockcheckJobModel
. Si je pouvais obtenir le PropertyInfo
que je rends du code de l'éditeur, je serais trié, mais je ne sais pas comment obtenir cette information. Si je descends la voie d'énumérer toutes les propriétés de la classe CreateStockcheckJobModel
alors je vais obtenir des questions si j'ai plus d'un EngineerModel
propriété (on peut avoir l'attribut avec True
, un autre pourrait avoir False
).
Que voulez-vous obtenir? Il me semble, que vous faites mal d'atteindre votre objectif –
Il s'agit essentiellement de rendre une liste d'ingénieurs possibles à choisir. Je veux que l'attribut contrôle la liste des ingénieurs disponibles. –
Je pensais que c'était une approche raisonnable car il semble être ce que l'attribut 'DisplayFormat' est en train de faire (ie changer la façon dont un contrôle/éditeur est rendu en fonction des données de l'attribut) –