I've an existing "Razor Page Web Project", and I've added my component as explain here: https://www.mikesdotnetting.com/article/338/using-razor-components-in-a-razor-page
After this, I've build and used my personal component. This as rendered correctly, but after added an @onclick event in a tag, this seem not work correctly (event not triggered)
Theoretically I've done all correct steps, and I've already check for a solution, but without success:
- in my startup.cs:
in ConfigureServices: services.AddServerSideBlazor();
in Configure:
app.UseEndpoints(endpoints => { endpoints.MapRazorPages(); endpoints.MapBlazorHub(); endpoints.MapFallbackToPage("/_Host"); });
- [+]: Components folder
- [+]: _Imports.razor inside my Components folder
@using System.Net.Http
@using Microsoft.AspNetCore.Authorization
@using Microsoft.AspNetCore.Components.Authorization
@using Microsoft.AspNetCore.Components.Forms
@using Microsoft.AspNetCore.Components.Routing
@using Microsoft.AspNetCore.Components.Web
@using Microsoft.JSInterop
- [+]: in my _Layout.cshtml (at the end of the Body TAG, after others script):
<script src="_framework/blazor.server.js"></script>
- [+]: App.razor in the root of the project:
@using Microsoft.AspNetCore.Components.Routing
<Router AppAssembly="typeof(Program).Assembly">
<Found Context="routeData">
<RouteView RouteData="routeData" />
</Found>
<NotFound>
<div class="alert alert-primary" role="alert">
<h1>Page Not Found</h1>
<p>Sorry, but there's nothing here!</p>
</div>
</NotFound>
</Router>
Now, my razor component (inside the Components folder):
@inherits LateralMenuComponent
@if (IsAuthenticate)
{
<div class="mt-3">
<div class="btn-group-vertical btn-group-toggle" role="toolbar" aria-label="Common Toolbar">
<a type="button" class="btn btn-warning text-left" href=".\">
<img src="src/dash.png" class="float-left pr-3" />
Dashboard
<span class="badge badge-light">@BadgeAlert</span>
</a>
@if (MenuItems != null)
{
foreach (var vitem in MenuItems)
{
<a type="button" class="btn btn-secondary text-left" href="@vitem.Function.PagePath"
@onclick="UpdateHeading"> @* <--- [/!\] event trigger, pls note this! *@
<img src="src/@vitem.Function.ImageShort"
class="float-left pr-3" />@vitem.Function.Label
</a>
}
}
</div>
</div>
}
whit relative componentBase:
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using System;
using System.Collections.Generic;
namespace myAppWeb.Components
{
public class LateralMenuComponent : ComponentBase
{
[Parameter] public bool IsAuthenticate { get; set; }>
[Parameter] public List<MenuItem> MenuItems { get; set; }>
[Parameter] public short BadgeAlert { get; set; } = 3; // 3 => Draft, TO_DO!
// [/!\] - This don't work!
public void UpdateHeading(MouseEventArgs e)
{
Console.WriteLine(e);
}
}
}
Are you able to help me understand what I'm doing wrong in my environment? Thanks in advance!
EDIT
As Vencovsky correctly suggested in a comment below, the problem was that I was using static rendering, so no clicks could be triggered in this case - a trivial problem, I know ...
@onclick:preventDefault
in thea
tag? - Nick