【问题标题】:Angular2 no rewrite entirely the URI it's executed fromAngular2没有完全重写它执行的URI
【发布时间】:2017-01-11 19:37:44
【问题描述】:

我有一个在 .NET 项目之上运行的 angular2 应用程序。我们通过http://example.com/index/app 访问该应用程序。

但是在 angular2 应用程序开始运行并出现后,我们的 URL 在浏览器中被重写为:例如http://example.com/#/dashboard

尝试直接转到http://example.com/index/app/#/dashboard 重定向或更精确地将我们的网址重写为http://example.com/#/dashboard 并显示应用程序。

如何防止这种行为不断拥有完整的 URI? http://example.com/index/app/#/dashboard Angular2 部分只是# 之后的一个。

【问题讨论】:

    标签: asp.net-mvc angular asp.net-core asp.net-core-mvc


    【解决方案1】:

    您的基本路径错误。你必须添加

    <base href="~/index/app" />
    

    到您的 html(index.html、index.cshtml 或 _Layout.cshtml,取决于您完成它的方式)文档。如果您不使用 Razor 视图,请删除 ~

    基于 cmets 更新

    您必须在您的 _Layout.cshtml 中定义一个部分,该部分将在每个视图的基础上呈现它。

    _Layout.cshtml:

    <head>
        ...
        @RenderSection("base", required: false)
    </head>
    

    在你的Views/Index/App.cshtml:

    @section base {
        <base href="~/index/app"/>
    }
    

    【讨论】:

    • 我是否必须仅在调用 Angular JS 文件的页面或全局布局中更改基础?因为我也有类似/api/actions/index/login 这样的路由,所以我希望能够访问它。
    • 取决于您的设置。你应该只有一个。还有/api/actions 与它有什么关系?它不提供任何剃刀视图,它只是 json/xml/data 返回。我不知道您的项目是如何构建的,有多种方法可以使用 ASP.NET Core 设置 Angular2(即通过一些 /Home/Index 布局,通过完全删除任何 Razor 控制器并在 _Layout 文件中进行操作或仅使用静态文件和一个 index.html。如果你的 angular2 应用程序启动了,这意味着你之前已经添加过一次,但是你将它设置为 &lt;base href="/"/&gt;。你只需要改变这个
    • Angular JS 构建文件包含在附加到/Index/App 的 cshtml 视图中。但是在项目中我们也有非角度页面:/Index/Login(登录页面/视图是我们的入口点:身份验证逻辑在 ASP.NET Core 端进行,然后生成令牌并调用 App Angular2 视图)。此外,我们还有带有路由的本地 API,例如 /api/action。由于 Angular2 应用程序被 /Index/App 视图“调用”,我认为 /Index/App URI 会出现。
    • 然后在 /Index/App.cshtml 中添加/更改它,但您必须使用部分来仅针对单个控制器操作呈现它(&lt;head&gt; 必须在标题中定义)
    • 感谢添加适当的部分,它可以完美运行。
    猜你喜欢
    • 1970-01-01
    • 2017-12-10
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-09
    • 1970-01-01
    相关资源
    最近更新 更多