Я имею два частичный вид которых визуализируются на странице,Частичный вид Разрешение в действии Фильтр
@{Html.RenderAction("SalesDashboard", "Dashboard");}
@{Html.RenderAction("MarketDashboard", "Dashboard");}
Тогда в мой контроллер
[ChildActionOnly]
public PartialViewResult SalesDashboard()
{
return PartialView("_SalesDashboard");
}
[ChildActionOnly]
public PartialViewResult MarketDashboard()
{
return PartialView("_MarketDashboard");
}
Это прекрасно работает. Теперь я хочу проверить, имеет ли пользователь разрешение на просмотр этого частичного представления. Поэтому я хочу проверить свой ActionFilter OnActionExecuting.
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
if (filterContext.IsChildAction) //How to get the partial view request here, I mean the controller name and action method
{
//business logic
}
int reqCnt = SessionMenu.Menus.FindIndex(i=> i.AccessPath == filterContext.HttpContext.Request.Url.PathAndQuery);
if (reqCnt <= 0)
{
//business logic
}
}
Я хочу, чтобы в моем фильтре был выбран путь частичного просмотра. Любая помощь приветствуется. Заранее спасибо
Пожалуйста, проверьте обновленный фильтр действий,
if (filterContext.IsChildAction)
{
string cName = filterContext.ActionDescriptor.ControllerDescriptor.ControllerName;
string aMthod = filterContext.ActionDescriptor.ActionName;
int i = SessionMenu.Menus.FindIndex(item => item.AccessPath == "/"+ cName +"/"+aMthod);
if (i <= 0)
{
filterContext.Result = null;
}
}
filterContext.Result равен нулем, если пользователь не имеет разрешения для частичного запроса, но частичный вид еще нагрузки. Что я должен проверить в своем контроллере/представлении, чтобы скрыть/предотвратить загрузку частичного представления?
спасибо, шаг вперед теперь, если пользователь не имеет прав для просмотра _MarketDashboard, как следует Я делаю это? –
Я имею в виду теперь я получаю контроллер и имя действия, я могу проверить это на мой db. Теперь, как мне запретить отображение частичного представления, если у пользователя нет разрешения на просмотр? –
@JohnyBravo Я не знаю, как вы управляете своим разрешением, но вы также можете сделать это в вас PartialViewResult, нет? И вернуть null, если пользователь не разрешен. Вы также можете попробовать 'return;' в 'OnActionExecuting', если пользователь не разрешен. –