模型绑定是否通过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); }