【问题标题】:Another page is not started from the beginning in Blazor在 Blazor 中,另一个页面没有从头开始
【发布时间】:2022-10-23 23:28:18
【问题描述】:

我遇到了 Blazor 的问题,可能是路由问题。我正在使用 MudBlazor 组件,我可以看到一个奇怪的行为。我有导航菜单(MudNavMenu),当我选择转到另一个页面时,它成功地重定向了我,但它没有重定向到页面的开头 - 它重定向到与最后一页相同的时刻。 例如:您一直向下滚动,Yoy 在页面的末尾,然后您选择转到另一个页面,此页面在末尾加载,而不是在开头。 我不知道为什么会这样(当然我希望在开始时加载一个新页面)。我尝试使用普通的 href、MudBlazor Href、带有 Id (#) 的 hrefs/Hrefs、带有 NavigateTo 方法的代码隐藏 NavigationManager。对于每个解决方案,它的行为都相同。

MainLayout.razor:

<MudLayout>
    <MudAppBar Style="background-color: #FFFFFF">
        <MudImage Width=200 Src="images/svg/logo-blue.svg"></MudImage>
        <p class="title-text">Some Title</p>
        <MudSpacer />
        <MudIconButton Icon="@Icons.Material.Filled.Menu" Color="Color.Info" Edge="Edge.End" OnClick="@((e) => DrawerToggle())" />
    </MudAppBar>
    <MudDrawer @bind-Open="@_drawerOpen" Anchor="Anchor.Right">
        <NavMenuMud />
    </MudDrawer>
    <MudMainContent>
        <MudContainer MaxWidth="MaxWidth.Medium" Class="pt-5">
            @Body
        </MudContainer>
    </MudMainContent>
</MudLayout>

@code {
    bool _drawerOpen = false;

    void DrawerToggle()
    {
        _drawerOpen = !_drawerOpen;
    }

NavMenuMud.razor

<MudNavMenu Bordered="true" Rounded="true" Margin="Margin.Dense" Color="Color.Info" Class="pa-2">
    <MudText Typo="Typo.h6" Class="px-4">Navigation</MudText>
    <MudText Typo="Typo.caption" Class="px-4 mud-text-secondary">Click to navigate</MudText>
    <MudNavLink Href="/" Match="NavLinkMatch.All" Icon="@Icons.Rounded.Home">Main page</MudNavLink>
    <MudNavLink Href="/Example1" Match="NavLinkMatch.Prefix" Icon="@Icons.Rounded.Info">Example1</MudNavLink>
    <MudNavGroup Title="List" Icon="@Icons.Rounded.ListAlt">
        <MudNavLink Href="/Example2">Example2</MudNavLink>
        <MudNavLink Href="/Example3">Example3</MudNavLink>
        <MudNavGroup Title="Examples">
            <MudNavLink Href="/Examples/Example4">Example4</MudNavLink>
        </MudNavGroup>
    </MudNavGroup>
</MudNavMenu>

除了这些,我当然还有一些带有内容的剃须刀组件(一些 MudTexts、MudPapers 等,没什么问题)。

【问题讨论】:

  • 您的“页面”是@Body 的不同替代品。哪个comp在滚动?如果是 MudContainer,那就是原因。
  • @HenkHolterman你是对的,这是滚动的。我应该以其他方式吗?或者,如果没关系,我可以以某种方式修复它吗?
  • 将 MudContainer 设置为固定并在各个页面中添加滚动 &lt;div&gt;(或 MudContainer )。

标签: razor navigation blazor mudblazor


【解决方案1】:

我面临着类似的问题。对这个问题的解决方案的长期搜索导致我在这里进行了更改,我没有在这里找到答案,我开始挖掘重定向到 blazor wasm 的指南。

而且我注意到我没有仔细阅读指南,一般来说,App.razor 文件包含以下标准代码:

 <Found Context="routeData">
    <RouteView RouteData="@routeData" DefaultLayout="@typeof(MainLayout)" />
    <FocusOnNavigate RouteData="@routeData" Selector="h1" />
</Found>

从这段代码整体来看,很明显,当切换到另一个页面时,优先级是朝向标签。

只需将标签添加到页面,当您转到此页面时,您将被重定向到此标签

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-28
    • 2014-12-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-08
    • 1970-01-01
    • 2011-04-06
    • 2016-04-17
    相关资源
    最近更新 更多