Я согласен с использованием модели базового представления или, возможно, только интерфейса с типом свойства CanEdit. Если вы идете по маршруту интерфейса, вы можете установить свойство в ActionFilter в методе OnActionExecuted.
Чтобы привязать его к представлению, создать новый HtmlHelper было бы довольно просто. Я бы использовал TextBoxFor в качестве базового класса, так как он имеет доступ к модели представления. Затем вы можете проверить свойство и создать необходимый атрибут HTML. Однако, пройдя этот маршрут, вам нужно будет создать нового помощника для каждого типа элемента управления вводом, который вам нужен (текстовое поле, список выбора и т. Д.).
Не зная всех подробностей того, что вы делаете, гораздо проще было бы не предоставлять кнопку «Сохранить» для пользователей только для чтения. Кнопка Сохранить будет управляться одним свойством в модели представления (или ViewData, если хотите).
Несколько других людей упомянули, что ограничение на стороне сервера все еще необходимо, чтобы люди не могли обойти ограничения клиента. Вам понадобится фильтр действий для этого. Эта ссылка имеет хорошее представление об этом.