Для частичного просмотра MVC3 нужен контроллер, но можно ли сделать его закрытым? - PullRequest
4 голосов
/ 01 сентября 2011

Можно ли создать частичное представление с контроллером, которое можно вызывать из другого представления, используя

Html.RenderAction (...)

НО без того же контроллерабыть доступным через URL?

Так, например,

public class ArticlesController : Controller
{
    public ActionResult HomeList()
    ...
}

Предоставляет список последних статей для нижней части моих веб-страниц.

Поэтому я вызываю это с

_Layout.cshtml

Однако я не хочу, чтобы кто-то приходил на

mysite.com / Статьи / HomeList

и видел то же самоесписок по разным причинам (безопасность, SEO и т. д.)

Спасибо

Редактировать:

В итоге я использовал свой собственный класс атрибутов, благодаря помощи Русса:

public class ChildActionOnly404Attribute : FilterAttribute, IAuthorizationFilter
{
    void IAuthorizationFilter.OnAuthorization(AuthorizationContext filterContext)
    {
        if (!filterContext.IsChildAction)
        {
            throw new HttpException(404, "");
        }
    }
}

1 Ответ

9 голосов
/ 01 сентября 2011

применить ChildActionOnlyAttribute к действию. Это означает, что это

  1. можно вызывать только изнутри приложения, а не напрямую через сопоставление маршрутов
  2. можно вызывать только с помощью методов HTMLHelper для Action или RenderAction

Я считаю, что это полезно для сквозных задач, таких как меню и навигация.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...