![](/img/trans.png)
[英]How do I get the ID in onget and the use handler in asp.net core razor page?
[英]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.