Обработчик страницы Razor с классом как Arg

Как создать обработчик, который принимает класс в качестве аргумента. Это основано на пример для страниц Razor. В этом примере объект 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. Можно ли сделать это?


person Zeus82    schedule 27.10.2018    source источник
comment
Что ж, abc не является допустимым GUID, и 123 тоже.   -  person Camilo Terevinto    schedule 27.10.2018
comment
Ваше право, в моем коде используется действующий guid, мне просто не хотелось их писать ... Я изменил пример на строки   -  person Zeus82    schedule 27.10.2018
comment
Пожалуйста, не редактируйте свой вопрос после того, как кто-то найдет время, чтобы ответить. Создается впечатление, что отвечающий не обращал внимания или что-то в этом роде.   -  person Camilo Terevinto    schedule 27.10.2018


Ответы (2)


Ссылка указывает на неправильный обработчик. У вас есть OnGet Edit Async, где Edit - имя обработчика; попробуй это:

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

Вы можете попробовать это

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

person Llazar    schedule 27.10.2018