通过查询字符串将复杂对象模型绑定到新的 ASPNET Core Razor 页面

Model binding complex object via query string to new ASPNET Core Razor Page

我们正在谈论 ASPNET Core 2.0 中的新 Razor 页面。

我想通过 OnGetAsync 将复杂对象传递给 Razor 页面。这适用于平面物体。对于复杂对象,我尝试传递与调用普通控制器时相同的格式:

class Child {
   public int Y { get; set; }
   public int Z { get; set; }
}

class Parent {
   public int X { get; set; }
   public Child Me { get; set; }
}

我将查询字符串中的序列化对象(给控制器)​​传递为:

?X=value&Child[Y]=value&Child[Z]=value

这在调用 ASPNET Core 2.0 控制器时工作正常。但是,如果我将它传递给一个新的 Razor 页面,Parent 参数对象就在那里,但是 Child 成员将为空;模型状态也将无效。

有什么方法可以通过查询字符串将复杂对象传递到 Razor 页面?

非常感谢。

如果你想获取子属性的值,你将不得不使用另一种方法。例如,如果您有以下代码:

public class IndexModel : PageModel
{
    public void OnGet(Parent parent)
    {

    }
}

然后您可以使用以下URL格式传递数据:

http://localhost:50050/?parent.Me.Y=4

希望对您有所帮助。