我的名为SrchController
的WebApi控制器具有下面列出的以下概念验证操作/方法。
我想通过操纵url来调用此方法/操作(不确定要调用它)。用于测试目的。所以我认为这会使用模型绑定。
如果我输入浏览器地址[mysiteroot]/api/srch/TestResults?criteria.name = "hello"
[HttpGet]
public IEnumerable<ParcelResultItemViewModel> TestResults(SimpleViewModel criteria)
{
//check value of criteria....it is always null. <-- i'm expecting name = "hello"
//do stuff here
return something;
}
我的问题与这个问题密切相关How to handle optional query string parameters in Web API达林表示它应该按照我的预期运作。可能有什么不对?
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
我没有收到任何错误消息,传递给方法的viewmodel的值只是null。
答案 0 :(得分:1)
url参数应以SimpleViewModel
类的属性命名,criteria
部分此处不需要。此外,查询字符串以不同的方式构造 - 没有双引号和空格。
总而言之,这是网址的样子:
[mysiteroot]/api/srch/TestResults?name=hello
或者,如果有多个参数:
[mysiteroot]/api/srch/TestResults?name=hello&address=someaddress
也就是说,假设SimpleViewModel
具有属性name
和address
(当然不是特定于案例)。从服务器端看,一切正常,所以一旦你开始使用正确的URL,一切都应该按预期工作。