模型绑定是否通过asp.net mvc中的查询字符串工作

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

如果我有一个获取请求,例如:

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并将Name作为null。 缺什么 ?

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

因此,如果您有Name属性,则需要在查询字符串中使用Name键。 如果编写Country.Name则模型绑定首先查找名为Country的属性,然后查找该国家/地区对象上的Name属性。

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

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

或者,如果您无法更改请求,则可以使用BindAttribute为action参数指定前缀:

 public ViewResult CheckCountryName([Bind(Prefix="Country")]Country oCountry) { //some code return View(oCountry); }