【问题标题】:Blazor: Route with parameter is not resolvedBlazor:带参数的路由未解析
【发布时间】:2020-05-15 15:12:19
【问题描述】:

我有这个非常简单的页面:

@page "/somepage/{id}"

@namespace My.BlazorApp.Pages

<h1>This would be page @Id</h1>

@code {

    [Parameter]
    public long Id { get; set; }
}

我的NavMenu.razor 中有以下代码:

@foreach(var sp in ViewModel.SubPageLinks) {
    <li class="nav-item px-3">
        <NavLink class="nav-link" href="@sp.Path">
            <span class="oi oi-plus" aria-hidden="true"></span> @sp.Title
        </NavLink>
    </li>
}

@sp.Path 生成 somepage/0somepage/1 等。

但是当我执行应用程序时,我得到“对不起,这个地址没有任何东西”。

我错过了什么?

【问题讨论】:

  • 你错过了@sp.Path 中的前导 /
  • 不,缺少的前导斜杠是正确的。创建新 Blazor 应用程序时生成的示例也省略了它。问题完全不同,我解决了。我会把它作为答案发布。

标签: blazor blazor-server-side


【解决方案1】:

你必须在你的路由参数中指定:long

@page "/somepage/{id:long}"

https://docs.microsoft.com/en-us/aspnet/core/blazor/routing?view=aspnetcore-3.1#route-constraints

【讨论】:

  • 这是另一个问题,它是正确的,但问题不同。我目前正在编写解决方案。
【解决方案2】:

我找到了解决方案。它与.csproj 文件有关。

在网上搜索发现this issue on Github,所以我做了一个非常简单的例子来重现它,重新打开这个问题。我刚刚创建了基本示例 Blazor 应用程序并添加了一个非常简单的页面,该页面仅显示“Foo”。

当我运行它时,我也得到了“抱歉,这个地址什么都没有”。

然后我进入.csproj,发现如下:

  <ItemGroup>
    <Content Remove="Pages\SomeOtherPage.razor" />
  </ItemGroup>

  <ItemGroup>
    <None Include="Pages\SomeOtherPage.razor" />
  </ItemGroup>

当我删除它时,它开始工作。另外,正如@inktkiller 所说,我忘记添加:long 类型定义,它首先导致打开页面时引发异常。

解释是:我将 Razor 页面创建为文本文件并在之后重命名它们,因为当我使用 Razor 页面向导时,我的 Visual Studio 仍会生成旧的 cshtml 文件。文本文件以这种奇怪的方式添加到csproj

【讨论】:

  • 但是当我输入这样的网址时,它仍然会发出消息“对不起,这个地址没有任何东西。”:“localhost:44329/somepage
  • 它解决了一个问题,但又引入了另一个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-07-16
  • 2020-02-15
  • 1970-01-01
  • 2023-03-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多