Я думаю, что вы имеете полный контроль над своей страницей в рамках MVC.Если вы используете стандартный метод MVC для создания элементов управления вводом, вы можете сделать следующее:
@Html.TextBox("MyTextBoxID", Model==null?"":Model.MyFieldValue, new {disabled = "disabled})
Если вы не используете стандартный метод MVC для создания элементов управления вводом.Вы можете создать свой собственный метод для создания элементов управления вводом.Например, в MyExt.cs
public static class MyExt
{
public static MvcHtmlString MyTextBox(this HtmlHelper html, string id, object value)
{
// check user privilege
if (CurrentUser.CanEditThisPage /*Implement your own logic here */)
return html.TextBox(id, value);
else
return html.TextBox(id, value, new {disabled = "disabled"});
}
}
И на вашей странице
@using MyNamespace
...
@Html.MyTextBox("MyTextBoxID", Mode==null?"":Model.MyFieldValue)
Другой способ
Передать индикатор со стороны сервера клиентуи использование javascript или JQuery для отключения всех элементов управления.
@Html.Hidden("CanEdit", CurrentUser.CanEditThisPage)
В javascript
void pageLoad() {
if ($("#CanEdit").val() == "true"))
$("input").attr("disabled", "disabled");
}
Что-то в этом роде (не уверен насчет правильности синтаксиса: P)