Обычно я использую частичные представления для представления форм и / или частей форм.
Я могу придумать два простых способа сделать то, что вам нужно (как я понял):
<% Html.RenderPartial(the_right_partial, model); %>
, где the_right_partial
- это значение, переданное из контроллера или помощника (в этом случае the_right_partial(something)
);
- передает параметр bool или enum из контроллера, представляющего возможность редактирования, а затем использует помощник для получения правильных атрибутов htmlAttributes, например:
<%= Html.TextBox("name", value, Html.TheRightHtmlAttributesFor(isReadableOrNot)) %>
;
Могут быть и другие способы, такие как создание новых помощников для полей ввода, которые принимают дополнительный аргумент isReadableOrNot (но мне это кажется излишним), или как манипулирование html / aspx каким-то странным (и полностью нечитаемым / не поддерживаемым способом) , но я бы их не советовал.
Обратите внимание, что использование html-атрибутов, таких как disabled
, на стороне клиента, а с такими инструментами, как firebug, их изменение занимает всего две секунды.
Другие уже говорили это, но я также должен: всегда предполагать, что пользователь приложит все усилия, чтобы сделать наихудшую возможную вещь, поэтому проверьте права пользователя на изменение содержимого на стороне сервера и рассмотрите возможность на стороне клиента. проверяет вежливость по отношению к пользователю (чтобы он / она понимали, что в этом случае форма не должна редактироваться).