asp.net-mvc-4 – ASP.NET MVC Web Api无法将QueryString映射到强类型参数

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-4 – ASP.NET MVC Web Api无法将QueryString映射到强类型参数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用Web API,参数请求始终为空。我使用强类型对象作为参数,而不是简单的类型作为参数,我缺少一些东西。

网址

http://localhost:2222/api/v1/divisions?EventId=30

控制器动作

public virtual ApiDivisionsResponse Get(ApiDivisionsRequest request)
        {
            return _apiDivisionsService.GetDivisions(request);
        }

目的

public class ApiDivisionsRequest : ApiAuthorizedRequest
    {
        public ApiDivisionsRequest()
        {
            Page = 1;
            PageSize = 10;
        }

        public int EventId { get; set; }
        public int PageSize { get; set; }
        public int Page { get; set; }
        public string[] Includes { get; set; }
    }

解决方法

我非常强烈地邀请您阅读 following article,以更好地了解参数绑定在Web API中的工作原理。读完之后,您将明白,默认情况下,Web API将查询字符串参数绑定到基本类型,并将身体内容请求到复杂类型。

因此,如果需要将查询字符串参数绑定到复杂类型,则需要通过使用[FromUri]参数装饰参数来覆盖此默认行为:

public virtual ApiDivisionsResponse  Get([FromUri] ApiDivisionsRequest request)
{
    ...
}

是的,我同意你的看法 – 这是一个糟糕的地方 – 在ASP.NET MVC中,模型绑定非常简单,他们在Web API中创造了一个噩梦。但是一旦你知道它是如何工作的,你就可以避免这种烦恼。

原文链接:https://www.f2er.com/aspnet/253896.html

猜你在找的asp.Net相关文章