带有 Class 作为参数的 Razor 页面处理程序

Razor Page Handler with Class as Arg

如何创建一个接受 class 作为参数的处理程序。这是基于mediatr example for Razor pages。在示例中,'Query' 对象只有一个 'Id' 属性。我想要 2 个属性,例如:

public async Task OnGetEditAsync(Query query)
{
    Data = await _mediator.Send(query);
}

public class Query
{
    public string FirstId { get; set; }
    public string SecondId { get; set; }
}

当我尝试在我的 cshtml 中创建这样的路由时:

<a asp-page="/TestPage" asp-route-FirstId="abc" asp-route-SecondId="123">Test Link</a>

我收到 400 错误。可以这样做吗?

Link 指向错误的处理程序,您有 OnGetEditAsync,其中 Edit 是处理程序的名称;试试这个:

<a asp-page="TestPage" asp-page-handler="Edit" asp-route-FirstId="abc" asp-route-SecondId="123">Test Link</a>

你可以试试这个

@{
var test= new Dictionary<string, string>
            {
                { "FirstId ", "something" },
                { "SecondId ", "something else" }
            };
}

<a asp-page="/TestPage"
   asp-all-route-data="test">Test Link</a>

将生成 <a href="/TestPage?FirstId=something&SecondId=something else">Test Link</a>