Usando o atributo Editable no modelo de visualização do MVC 3
Eu estou olhando para usar atributos para marcar as propriedades do modelo de exibição como readonly para que os campos de exibição sejam somente leitura na exibição renderizada. A aplicação de System.ComponentModel.DataAnnotations.EditableAttribute parece ser o atributo exato de que preciso, mas parece não funcionar, ou seja, os campos da caixa de texto ainda são editáveis. Eu olhei ao redor e não encontrei respostas e apenas algumas perguntas relacionadas. O atributo editável, conforme aplicado abaixo, não funciona quando a exibição é renderizada.
<code>[Display(Name = "Last Name")] [Editable(false, AllowInitialValue = true)] public string LastName { get; set; } </code>
Eu posso alcançar o comportamento de somente leitura usando uma função auxiliar de exibição como esta, mas minha preferência é usar um atributo na propriedade de modelo.
<code>@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()) </code>
Outros atributos funcionam perfeitamente bem, incluindo atributos de validação personalizados. Você pode me dizer se o atributo editável das anotações de dados funciona neste contexto, deve funcionar apenas como aplicado acima ou há algo mais que precisa ser feito? Obrigado.