ASP.NET MVC 4 - MapRoute 配置,以删除已存在默认配置的“/Home”

本文关键字:配置 默认 存在 Home MVC NET MapRoute ASP 删除 | 更新日期: 2023-09-27 18:30:22

我有一个解决方案,其中初始和默认(RouteConfig)页面是"登录/索引"。此页面,其中名称让我们理解用于用户登录系统。成功登录后,被重定向到主页。

登录页面显示的URL是 http://localhost:7037/,在此之后,在"主页"页面是 http://localhost:7037/主页。如何配置控制器 主页在运行索引上不显示"主页"?换句话说,工作等于登录。

我尝试了一些替代方案,但我仍然没有找到在这种特定情况下工作的解决方案。

谢谢

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.LowercaseUrls = true;
        routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional },
            namespaces: new [] { "Solution.UI.WEB.Controllers" }
        );
    }

ASP.NET MVC 4 - MapRoute 配置,以删除已存在默认配置的“/Home”

让我们看看我是否理解了问题

您只有一个路由"默认"。

routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Login", action = "Index", id = UrlParameter.Optional },
            namespaces: new [] { "Solution.UI.WEB.Controllers" }
        );

您要做的是将"主页"在 URL 上消失,将控制器"登录"更改为"默认"上的"主页"。它会是这样的:

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
                namespaces: new [] { "Solution.UI.WEB.Controllers" }
            );

因此,在HomeController上的操作"索引"中.cs验证用户是否已记录,如果没有,则重定向到操作("索引","登录")。

希望有帮助。

您可以在主页上通过javascript replaceState尝试

<script>
    (function () {
        var path = document.URL.match(/'/'w+(?='?)/g)[0];
        window.history.replaceState('string', 'Some Title Text', path.replace('/',''));
    })();
</script>