MVC3 Partial View需要一个控制器,但是我可以将其设为非公开吗?

Mar*_*ici 4 asp.net controller view asp.net-mvc-3

是否可以创建一个具有控制器的局部视图,可以使用另一个视图调用该控制器

Html.RenderAction(...)

但是没有相同的控制器可以通过URL访问?

所以举个例子

public class ArticlesController : Controller
{
    public ActionResult HomeList()
    ...
}
Run Code Online (Sandbox Code Playgroud)

提供我的网页底部的最新文章列表.

所以我称之为

_Layout.cshtml

但是我不希望有人来

mysite.com/Articles/HomeList

由于各种原因(安全,搜索引擎优化等)看到相同的列表

谢谢

编辑:

由于Russ的帮助,我最终使用了自己的属性类:

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

Rus*_*Cam 9

适用ChildActionOnlyAttribute于行动.这意味着它

  1. 只能从应用程序内部调用,而不能直接通过路由匹配调用
  2. 只能使用Action或RenderAction HTMLHelper扩展方法调用

我发现它对于菜单和导航等跨领域问题很有用.