Używanie edytowalnego atrybutu w modelu widoku MVC 3
Szukam atrybutów do oznaczania właściwości modelu widoku jako tylko do odczytu, aby pola widoku były odczytywane tylko w widoku renderowanym. Zastosowanie System.ComponentModel.DataAnnotations.EditableAttribute wydaje się być dokładnym atrybutem, którego potrzebuję, ale nie działa, tzn. Pola tekstowe są nadal edytowalne. Rozejrzałem się dookoła i nie mogę znaleźć odpowiedzi ani tylko kilku powiązanych pytań. Zastosowany poniżej atrybut edytowalny nie działa, gdy widok jest renderowany.
<code>[Display(Name = "Last Name")] [Editable(false, AllowInitialValue = true)] public string LastName { get; set; } </code>
Mogę osiągnąć zachowanie tylko do odczytu za pomocą funkcji pomocnika widoku takiej jak ta, ale preferuję użycie atrybutu we właściwości modelu.
<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>
Inne atrybuty działają idealnie poprawnie, w tym niestandardowe atrybuty sprawdzania poprawności. Czy możesz mi powiedzieć, czy atrybut edytowalny adnotacji danych działa w tym kontekście, czy powinien działać tak, jak to opisano powyżej, czy też jest coś jeszcze do zrobienia? Dzięki.