单击 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();
}
}
结果:
我有一个 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();
}
}
结果: