20

模型绑定是否也可以通过查询字符串工作?

如果我有类似的获取请求:

GET /Country/CheckName?Country.Name=abc&Country.Id=0 HTTP/1.1

CountryController 中的以下方法是否具有其 oCountry 参数,其中包含来自查询字符串的值的 Id 和 Name 属性?

public ViewResult CheckCountryName(Country oCountry)
{
     //some code
     return View(oCountry);
}

出于某种原因,我在 oCountry 对象中将 Id 设为 0,将 Name 设为 null。什么不见​​了 ?

4

1 回答 1

27

是的,模型绑定支持从查询字符串绑定。然而,相同的模型绑定规则也适用于此处:属性名称/表达式应在您的请求和模型中匹配。

因此,如果您有一个Name属性,那么您需要Name在查询字符串中有一个键。如果您编写Country.Name模型绑定,请先查找一个名为的属性Country,然后再查找Name该国家对象上的一个属性。

因此,您不需要Country属性名称的前缀,因此您的请求应如下所示:

/Country/CheckName?Name=abc&Id=1 HTTP/1.1

或者,如果您无法更改请求,您可以使用以下命令为您的操作参数指定前缀BindAttribute

public ViewResult CheckCountryName([Bind(Prefix="Country")]Country oCountry)
{
     //some code
     return View(oCountry);
}
于 2013-06-26T20:03:46.350 回答