模型绑定也可以通过查询字符串工作吗?
如果我有一个get请求,比如:
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);
}
由于某些原因,我在oCountry对象中得到Id为0,名称为null。遗漏了什么?
发布于 2013-06-27 04:03:46
是的,模型绑定支持来自查询字符串的绑定。然而,同样的模型绑定规则也适用于这里:属性名称/表达式应该在请求和模型中匹配。
因此,如果你有一个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);
}
https://stackoverflow.com/questions/17329342
复制相似问题