即使我们在.NET core中首次启动其他控制器,如何重定向到主屏幕

问题描述 投票:0回答:1

我正在使用 .NET Windows 应用程序并转向 Web 应用程序。

在我的应用程序中,Home 控制器及其索引操作被指定为默认控制器和操作方法。在主控制器中,我正在静态变量中初始化应用程序元数据(名字、姓氏、角色等),这些元数据旨在跨各种屏幕使用。

但是,我观察到用户直接访问控制器,例如“查看详细信息”和“添加新用户”,从而绕过了家庭控制器。这会导致静态变量无法正确初始化。

为了解决这个问题,我想实现一种机制,确保我的应用程序重定向到主控制器,无论用户尝试访问的初始页面如何。这将允许在任何其他交互之前初始化必要的值。

作为一名从 Windows 应用程序过渡的开发人员,我发现向 Web 开发的转变有些挑战性。

我遇到的主要问题包括:

我希望将我的应用程序重定向到Home/index(在program.cs中配置为默认值),即使用户第一次尝试访问任何其他控制器也是如此。


app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

如果重定向不可行,我需要找到一种方法来初始化静态变量中的值,无论访问哪个 URL(例如,查看详细信息、添加用户等)。考虑到我目前有 10 个控制器和 32 个视图,我正在寻找一种更有效的方法来实现此初始化。

c# .net asp.net-mvc
1个回答
0
投票

但是,我观察到用户直接访问控制器,例如“查看详细信息”和“添加新用户”,从而绕过了家庭控制器。这会导致静态变量无法正确初始化。

嗯,用户将使用到子页面的直接链接,或以任何类似的方式访问您的网站,所以我不确定重定向到主页是否会带来良好的用户体验,除非我们正在讨论重定向到登录页面未经授权的用户。

我不确定你需要这些静态变量做什么,但是我建议是创建一些保存这些静态变量的类,使用 DI 容器将其作为 Singleton 实例注入,如果需要,使用惰性获取所需的所有元数据加载,例如使用 Lazy<> https://learn.microsoft.com/en-gb/dotnet/api/system.lazy-1?view=net-8.0

如何注入单例:https://learn.microsoft.com/en-gb/aspnet/core/fundamentals/dependency-injection?view=aspnetcore-8.0#service-registration-methods

© www.soinside.com 2019 - 2024. All rights reserved.