繁体   English   中英

单击锚链接时未调用 ASP.Net Core 6.0 OnGet 处理程序

[英]ASP.Net Core 6.0 OnGet handler not called when an anchor link is clicked

我有以下 html 代码,其中包含多个链接(这是布局的一部分,在我的 Razor 页面中使用):

<div class="footer-left">
    <ul>
        <li><a href="/About">About</a></li>
        <li><a href="/Privacy">Privacy Policy</a></li>
        <li><a href="/CookieList">Cookies List</a></li>
        <li><a href="/Terms">Terms of use</a></li>
    </ul>
</div>  

然后我有一个关于页面的 OnGet 处理程序:

public class AboutModel : PageModel
{
  private readonly DbDuhnjaContext mDataContext;

  public AboutModel(DbDuhnjaContext aDataContext)
  {
     mDataContext = aDataContext;
  }

  public void OnGet()
  {
     // Some code
  }
}

当我通过在浏览器中键入其路径打开页面时: https ://mywebsite.com/About 或刷新页面时,它会正确调用 OnGet 方法。 但是,如果我单击链接,它不会调用该方法。

我在这里想念什么?

此致

如果您创建一个新的空 Razor 页面,它会创建 PageModel (cshtml.cs) 和 Razor 视图 (cshtml)。

您的 PageModel 看起来不错,但 Razor 视图中缺少的是您将在新的空 Razor 页面顶部看到的内容。 @page指令(在这种情况下没有路由)和@model属性,它允许您从视图中以强类型的方式访问后面的代码。

最后,很可能是链接不使用 AspNetCore 路由的原因,您应该在锚标记中使用asp-page Anchor TagHelper

@page
@model MyProjectName.Pages.AboutModel
<div class="footer-left">
    <ul>
        <li><a asp-page="/About">About</a></li>
        <li><a asp-page="/Privacy">Privacy Policy</a></li>
        <li><a asp-page="/CookieList">Cookies List</a></li>
        <li><a asp-page="/Terms">Terms of use</a></li>
    </ul>
</div> 

如果您不是从 File->New AspNetCore Web App 工作,您可能还需要在Shared\_ViewImports.cshtml中注册标签助手

// ...
@addTagHelper *,Microsoft.AspNetCore.Mvc.TagHelpers

很抱歉,看来问题出在我这边。 当我单击链接时,“关于”页面是从缓存中提供的,并且该缓存包含尚未实现 OnGet 处理程序的版本。 清除缓存后,它开始工作。 谢谢

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM