为什么在提交Blazor服务器表单时会出现404错误?

为什么在提交Blazor服务器表单时会出现404错误?,blazor,blazor-server-side,asp.net-core-5.0,Blazor,Blazor Server Side,Asp.net Core 5.0,我在VisualStudio2019中使用.NETCore5.x创建了一个新的Blazor服务器项目 我创建了一个新页面Search.razor,并将其放在/Pages目录中 我创建了一个新页面SearchResults.razor,并将其放在/Pages目录中 我的搜索.razor如下所示: @page "/search" <h3>Search</h3> <form method="GET" action="S

我在VisualStudio2019中使用.NETCore5.x创建了一个新的Blazor服务器项目

我创建了一个新页面
Search.razor
,并将其放在
/Pages
目录中

我创建了一个新页面
SearchResults.razor
,并将其放在
/Pages
目录中

我的搜索.razor如下所示:

@page "/search"

<h3>Search</h3>

<form method="GET" action="SearchResults.razor">
    <input type="text" id="name" name="name" />
    ... future form elements here
    <button type="submit"> Submit </button>
</form>

@code {

}
@page "/searchresults"

<h3>SearchResults</h3>

@code {

}
<div class="@NavMenuCssClass" @onclick="ToggleNavMenu">
    <ul class="nav flex-column">
        ...
        <li class="nav-item px-3">
            <NavLink class="nav-link" href="search">
                <span class="oi oi-list-rich" aria-hidden="true"></span> Search
            </NavLink>
        </li>
    </ul>
</div>
地址栏包含以下内容:

https://localhost:44314/SearchResults.razor?name=joe+smith
“SearchResults.razor”
不是有效地址

快速概述其工作原理:

@page "/search"
<EditForm Model="this" OnValidSubmit="DoSearch">
    <InputText @bind-Value="search" />
    <button type="submit">Submit</button>
</EditForm>

@code {
    private string search;
    void DoSearch()
    {
        var arg = System.Web.HttpUtility.UrlEncode(search);
        Navigator.NavigateTo($"searchresults/{arg}");
    }
}
@page”/search
提交
@代码{
私有字符串搜索;
void DoSearch()
{
var arg=System.Web.HttpUtility.UrlEncode(搜索);
Navigator.NavigateTo($“searchresults/{arg}”);
}
}
接收端UrlDecode免费提供:

@page "/searchresults/{text?}"
<h3>SearchResults</h3>
<p>Looking for @Text</p>    

@code {

  [Parameter] public string Text { get; set; }


}
@page”/searchresults/{text?}
搜索结果
正在查找@Text

@代码{ [参数]公共字符串文本{get;set;} }
@page "/searchresults/{text?}"
<h3>SearchResults</h3>
<p>Looking for @Text</p>    

@code {

  [Parameter] public string Text { get; set; }


}