我需要使用某些参数向页面添加重定向。查询字符串必须类似于:
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
方法。如何更改此行为,并使用我的示例中的属性名称重定向到页面?
答案 0 :(得分:1)
大多数类似ResirectToPage()
的方法所做的就是调用非原始类型的ToString()
方法。在这种情况下,您需要覆盖ComplexObject
类的ToString()
方法,例如
public override string ToString(){
return $"ComplexObject.Property1={Property1}&ComplexObject.Property2={Property2}";
}
但是为什么需要这样的东西。您可以单独获取属性,然后根据您使用的方法进行设置?
答案 1 :(得分:0)
我决定直接创建RedirectToPageResult
,它会有所帮助:
return new RedirectToPageResult("PageName")
{
RouteValues = new RouteValueDictionary
{
{ "ComplexObject.Property1", true },
{ "ComplexObject.Property2", 5 }
},
};