单击 Cshtml Razor 页面中的 A 标记或 Link 时打开 Html 页面

Opening up a Html Page When Clicking an A Tag Or Link in a Cshtml Razor Page

我有一个 razor .net core 3 项目,我在其中使用 Razor 页面作为视图,我将有一些 html 页面不会是 cshtml,我需要是当我点击 link 或 A 标签

时能够直接打开 html 页面

我尝试在我的 _Layout.cshtml 导航栏中使用来打开 TestPage.html

<li>
 <a asp-page="/Content/TestPage">Content</a> 
</li>

虽然这在我检查页面时不会生成任何 html,因此当我单击 link 时没有任何反应。我知道如果我要查找的页面是顶部带有 @page 的 Razor 页面

我也试过了

<li>
  <a href="/Content/TestPage">Content</a> 
</li>

虽然它的确切路径总是给出错误“找不到本地主机页面”。 我知道,如果我只是将 html 页面设为 cshtml 页面,它会起作用,但在我正在处理的项目的这个特定时刻,它必须是 html 页面,什么都没有正在工作。

TestPage.html 与其他 razor 视图位于 Pages 文件夹下,最后位于 Content 文件夹中。

如果您需要更多上下文,请随时提出任何帮助,我们将不胜感激

TestPage.html

<div>Test Text To Show</div>

您的 href 末尾缺少 .html。您不能像引用控制器端点那样引用静态页面。 所以在你的情况下你想要:

<li>
  <a href="/Content/TestPage.html">Content</a> 
</li>

如果你想在 razor 页面项目中使用 razor 视图而不是 razor 页面,你不应该将 razor 视图添加到页面中 folder.You 需要创建一个 Views 文件夹并放置一个 Shared 文件夹,它包含_Layout.cshtml到it.Also,你需要把_ViewImports.cshtml和_ViewStart.cshtml.

文件夹结构:

_ViewImports.cshtml:

@using {YourProjectName}
@using {YourProjectName}.Models
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers

_ViewStart.cshtml:

@{
    Layout = "_Layout";
}

然后需要将mvc的路由添加到Startup.cs:

public void ConfigureServices(IServiceCollection services)
        {
            services.AddRazorPages();
            services.AddControllers();
            ...
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            
            ...

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

然后添加Controllers文件夹,并在其中添加Content Controller和TestPage。

文件夹结构:

内容控制器:

public class ContentController : Controller
    {
        public IActionResult TestPage()
        {
            return View();
        }
    }

结果: