为什么可以';t我通过操纵URL手动将ViewModel传递给webapi控制器
本文关键字:ViewModel 控制器 webapi URL 操纵 为什么 | 更新日期: 2023-09-27 18:25:17
My WebApi Controller名为SrchController
,具有以下概念验证操作/方法。
我想通过操纵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;
}
我的问题与这个问题密切相关如何处理Web API中的可选查询字符串参数Darin说它应该像我期望的那样工作。可能出了什么问题?
webapi路由
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
更新
我没有收到任何错误消息,传递给该方法的视图模型的值只是null。
url参数应该以SimpleViewModel
类的属性命名,这里不需要criteria
部分。此外,查询字符串是以不同的方式构造的,没有双引号和空格。
总而言之,以下是url的外观:
[mysiteroot]/api/srch/TestResults?name=hello
或者,在多个参数的情况下:
[mysiteroot]/api/srch/TestResults?name=hello&address=someaddress
也就是说,再次假设SimpleViewModel
具有属性name
和address
(当然不是具体情况)。从服务器端看,一切都很正常,所以只要您开始使用正确的URL,一切都应该按预期进行。