MVC - открыть страницу в режиме просмотра - PullRequest
2 голосов
/ 05 мая 2011

Привет Я пытаюсь понять, есть ли у кого-нибудь блестящая идея о том, как реализовать концепцию режима просмотра в MVC. Поэтому, если пользователь открывает страницу, страница должна открываться в режиме просмотра (все элементы управления отключены), если у них нет прав на редактирование, иначе должно открываться как обычно. Обратите внимание, что на странице просмотра также есть отдельные страницы

1 Ответ

0 голосов
/ 05 мая 2011

Я думаю, что вы имеете полный контроль над своей страницей в рамках 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)

...