有没有一个地方我可以把这段代码,而不必重复它的每一页(ASP.NET核心剃刀页)

jyztefdp  于 2023-05-19  发布在  .NET
关注(0)|答案(1)|浏览(114)

我在每一页剃刀的顶部都有这样的代码:

public override void OnPageHandlerExecuting(PageHandlerExecutingContext context)
{
    base.OnPageHandlerExecuting(context);

    if (HttpContext.Session.GetString("first_name") == null)
    {
        context.Result = new RedirectResult("/Authentication/Login");
    }
}

我想把它贴在_layout页面上,但它没有附带cs文件。
我只是想看看他们是否登录了。我宁愿在_layout文件中这样做(有意义),但我猜微软有更好的主意。

ymdaylpp

ymdaylpp1#

我认为你可以创建一个类似于“主控制器”的东西,在其中包含你的覆盖,然后让一个普通的控制器继承它。
首先创建一个Master。

namespace YourNameSpace.Controllers
{
    public class MasterController : Controller
    {
        //your code for every page
    }
}

然后在每个控制器中使用它

namespace YourNameSpace.Controllers
{
    [AllowAnonymous]
    public class HomeController : MasterController
    {

    }
}

相关问题