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

时间:2018-01-23 00:08:41

标签: query-string model-binding razor-pages

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

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

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成员将为null;模型状态也将无效。

是否可以通过查询字符串将复杂对象传递给Razor Page?

非常感谢。

1 个答案:

答案 0 :(得分:1)

如果要获取子属性的值,则必须使用其他方法。例如,如果您有以下代码:

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

    }
}

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

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

我希望它有所帮助。