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

Bri*_*rij 17 .net c# asp.net-mvc model-binding query-string

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

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

GET /Country/CheckName?Country.Name=abc&Country.Id=0 HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

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

public ViewResult CheckCountryName(Country oCountry)
{
     //some code
     return View(oCountry);
}
Run Code Online (Sandbox Code Playgroud)

出于某种原因,我在OCountry对象中将Id称为0并将Name作为null.缺什么 ?

nem*_*esv 23

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

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

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

/Country/CheckName?Name=abc&Id=1 HTTP/1.1
Run Code Online (Sandbox Code Playgroud)

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

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