类为Arg的Razor页面处理程序

时间:2018-10-27 18:14:06

标签: c# asp.net-core asp.net-core-2.2

如何创建将类作为arg的处理程序。这基于mediatr example for Razor pages。在该示例中,“查询”对象仅具有“ 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错误。可以这样做吗?

2 个答案:

答案 0 :(得分:1)

链接指向错误的处理程序,您具有OnGet Edit Async,其中 Edit 是处理程序的名称;试试这个:

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

答案 1 :(得分:0)

您可以尝试

@{
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>