![](/img/trans.png)
[英]WebApi - UrlHelper.Route to GET with [FromUri] object parameter
[英]Webapi object parameter with FromUri is null if no querystring passed
我有以下API控制器操作
[HttpGet]
[Route("assets")]
public async Task<HttpResponseMessage> Get([FromUri]SearchCriteria searchCriteria)
{
}
当我通过访问URL与提琴手测试时
searchCriteria参数为null,但是当我尝试使用
http:// localhost / assets?param1 = 1&param2 = 2,然后searchCriteria获得了该对象的实例。
SearchCriteria类定义为
public class SearchCriteria
{
public SearchCriteria()
{
Param1 = "";
Param2 = "";
PageIndex = 0;
PageSize = 10;
}
public string Param1 { get; set; }
public string Param2 { get; set; }
public int PageIndex{ get; set; }
public int PageSize { get; set; }
}
我的方法有什么问题? 为什么不传递查询字符串时action参数为null?
谢谢
好吧,因为没有数据可以创建参数实例。
查看网址。 在这里,您具有用于创建参数的值:
http://localhost/assets?param1=1¶m2=2
注意如何为param1
和param2
提供值,这些值直接映射到参数的类型:
public string Param1 { get; set; }
public string Param2 { get; set; }
但是在此URL中,没有值:
http://localhost/assets
因此,没有什么可用于创建method参数的实例。
null
字面意思是“这里什么也没有”。 由于未提供任何参数值,因此没有任何内容。
如果您可以使用搜索条件为空但可以避免单元测试错误,请尝试
[HttpGet]
[Route("assets")]
public async Task<HttpResponseMessage> Get([FromUri]SearchCriteria searchCriteria)
{
if(searchCriteria == null)
searchCriteria = new SearchCriteria();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.