如何在 RedirectToPage 中传递复杂对象
How to pass complex object in RedirectToPage
我需要使用某些参数将重定向添加到页面。查询字符串必须如下所示:
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
方法。如何更改此行为并使用示例中的属性名称重定向到页面?
像 ResirectToPage()
这样的大多数方法所做的是调用 ToString()
非基本类型的方法。在这种情况下,您需要覆盖 ComplexObject
class 的 ToString()
方法,例如
public override string ToString(){
return $"ComplexObject.Property1={Property1}&ComplexObject.Property2={Property2}";
}
但是你为什么需要那样的东西。您可以单独获取属性并在您使用的方法上设置它们吗?
我决定直接创建 RedirectToPageResult
,这有帮助:
return new RedirectToPageResult("PageName")
{
RouteValues = new RouteValueDictionary
{
{ "ComplexObject.Property1", true },
{ "ComplexObject.Property2", 5 }
},
};
我需要使用某些参数将重定向添加到页面。查询字符串必须如下所示:
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
方法。如何更改此行为并使用示例中的属性名称重定向到页面?
像 ResirectToPage()
这样的大多数方法所做的是调用 ToString()
非基本类型的方法。在这种情况下,您需要覆盖 ComplexObject
class 的 ToString()
方法,例如
public override string ToString(){
return $"ComplexObject.Property1={Property1}&ComplexObject.Property2={Property2}";
}
但是你为什么需要那样的东西。您可以单独获取属性并在您使用的方法上设置它们吗?
我决定直接创建 RedirectToPageResult
,这有帮助:
return new RedirectToPageResult("PageName")
{
RouteValues = new RouteValueDictionary
{
{ "ComplexObject.Property1", true },
{ "ComplexObject.Property2", 5 }
},
};