模型绑定(bind)也可以通过查询字符串工作吗?
如果我有一个类似的获取请求:
GET /Country/CheckName?Country.Name=abc&Country.Id=0 HTTP/1.1
CountryController中的以下方法是否将其oCountry参数包含ID和Name属性以及查询字符串中的值?
public ViewResult CheckCountryName(Country oCountry)
{
//some code
return View(oCountry);
}
由于某种原因,在oCountry对象中,我将Id设置为0,将Name设置为null。什么不见了 ?
最佳答案
是的,模型绑定(bind)支持从查询字符串进行绑定(bind)。但是,相同的模型绑定(bind)规则也适用于此:属性名称/表达式在您的请求和模型中应该匹配。
因此,如果您具有Name
属性,则需要在查询字符串中具有Name
键。如果编写Country.Name
,则模型绑定(bind)将首先在该国家对象上寻找一个名为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);
}
关于c# - 通过ASP.NET MVC中的查询字符串是否可以进行模型绑定(bind),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17329342/