À l'aide d'attributs Modifiables sur MVC 3 modèle de vue

Je cherche à utiliser les attributs de la marque afficher les propriétés du modèle en readonly, de sorte que le point de vue des champs sont en lecture seule dans le rendu de la vue. L'Application Du Système.ComponentModel.DataAnnotations.EditableAttribute semble être l'exact attribut j'ai besoin, mais elle ne semble pas fonctionner c'est à dire zone de texte champs sont toujours modifiables. J'ai regardé tout autour et ne peuvent trouver de réponses et seulement quelques-unes des questions connexes. L'attribut modifiable appliquée ci-dessous ne fonctionne pas lorsque la vue est rendue.

[Display(Name = "Last Name")]
[Editable(false, AllowInitialValue = true)]
public string LastName { get; set; }

Que je peux atteindre les readonly comportement à l'aide d'un helper de vue de la fonction comme ça, mais ma préférence est d'utiliser un attribut sur le modèle de la propriété.

@functions {
    object getHtmlAttributes()
    {
    if (@ViewBag.Mode == "Edit")
    {
      return new {style = "width:100px;background:#ff6;", @readonly = "readonly"};
    }

    return new { style = "width:100px;" };  
}
} 

@Html.TextBoxFor(model => model.FirstName, getHtmlAttributes())

Autres attributs fonctionnent parfaitement ok y compris personnalisés attributs de validation. Pouvez-vous me dire si les annotations de données d'attributs modifiables œuvres dans ce contexte, il doit travailler comme appliquée au-dessus ou est-il autre chose qui doit être fait? Merci.

Sur la vue de créer nous voulons que les utilisateurs soient en mesure de fournir des valeurs pour tous les champs, mais une fois dans l'affichage modifier certains de ces champs doivent devenir readonly.

OriginalL'auteur Steven Chalk | 2012-04-13