模型绑定是否通过ASP.NETMVC中的查询字符串工作?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (11)

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

如果我有如下的获取请求:

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

CountryController中的以下方法是否将其包含Id和Name属性的oCountry参数与来自查​​询字符串的值进行比较?

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

出于某种原因,我得到ID为0和名称为null在oCountry对象。什么不见​​了 ?

提问于
用户回答回答于

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

所以如果你有一个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);
}

扫码关注云+社区