Подскажите, как лучше в зависимости от прав пользователей отображать или не отображать определенный контент на странице?
Здравствуйте, Аноним, Вы писали:
А>Подскажите, как лучше в зависимости от прав пользователей отображать или не отображать определенный контент на странице?
А чем вам не подходит обычный:
@if (Session["auth"] == "yes")
{
<br /><br /><text>Добро пожаловать, </text> @Session["name"];<br /><br />
}
else
{
using (Html.BeginForm("LogOn", "Account", FormMethod.Post, new { id = "flogin" }))
{
<p>@ViewBag.logonerror</p>
<p>Логин:</p>
....
}
}
И в том же духе.
Здравствуйте, Аноним, Вы писали:
А>Подскажите, как лучше в зависимости от прав пользователей отображать или не отображать определенный контент на странице?
Вариант "в лоб" — передаешь пользователя во все модели (можно завести базовую модель и ActionFilter, который ее будет заполнять), в коде View
проверяешь принадлежность пользователя роли и в зависимости от этого рендеришь.
Другой вариант.
Вынести все юзеро-зависимые контролы в отдельный контроллер
class UIPartsController : Controller
{
[VisibleFor(Roles="Admins")]
public ActionResult AdminSideBar()
{
return View();
}
[VisibleFor(Roles="Admins")]
public ActionResult AdminTopMenu()
{
return View();
}
}
//Из View
<%= Html.Action("AdminSideBar", "UIParts") %>
<%= Html.Action("AdminTopMenu", "UIParts")
VisibleFor- это ActionFilter, который проверяет принадлежит ли пользователь роли, и если да, то разрешает отрисовку, а если нет — то отрисовывает пустой контент. Код мне писать лениво — погугли если что.