Как передать сложный объект в RedirectToPage - PullRequest
0 голосов
/ 23 сентября 2019

Мне нужно добавить перенаправление на страницу с определенными параметрами.Строка запроса должна выглядеть следующим образом:

PageName? ComplexObject.Property1 = true & ComplexObject.Property2 = 5

Я пытаюсь сделать это, передав комплексный объект методу RedirectToPage:

public IActionResult OnPostRedirectToPage()
{
    return RedirectToPage(
        "PageName", 
        new
        {
            ComplexObject = new
            {
                Property1=true,
                Property2=5
            }
        });
}

Но я получаю строку запроса, которая выглядит следующим образом:

PageName? ComplexObject = ComplexObjectTypeFullName

Проблема заключается вRedirectToPage просто вызывает ToString метод для каждого свойства объекта.Как изменить это поведение и сделать перенаправление на страницу с именами свойств из моего примера?

Ответы [ 2 ]

1 голос
/ 23 сентября 2019

Большинство методов, таких как ResirectToPage(), вызывают ToString() методы непримитивных типов.В этом случае вам нужно переопределить метод ToString() вашего ComplexObject класса, например

public override string ToString(){
    return $"ComplexObject.Property1={Property1}&ComplexObject.Property2={Property2}";
}

Но зачем вам что-то подобное?Вы можете просто получить свойства по отдельности и установить их для используемого вами метода?

0 голосов
/ 23 сентября 2019

Я решил создать RedirectToPageResult напрямую, и это помогает:

return new RedirectToPageResult("PageName")
{
    RouteValues = new RouteValueDictionary
    {
        { "ComplexObject.Property1", true },
        { "ComplexObject.Property2", 5 }
    },
};
...