asp.net-mvc-4 - ASP.NET MVC Web Api 获取未将 QueryString 映射到强类型参数

标签 asp.net-mvc-4 asp.net-web-api

使用 Web API 时参数请求始终为空。我是否缺少使用强类型对象作为参数而不是简单类型作为参数的东西。

网址

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

Controller 操作
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以更好地了解参数绑定(bind)在 Web API 中的工作原理。读完你就会明白,默认情况下,Web API 将查询字符串参数绑定(bind)到原始类型,并将请求正文内容绑定(bind)到复杂类型。

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

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

是的,我同意你的看法——这真是一团糟——模型绑定(bind)在普通的 ASP.NET MVC 中非常容易,他们在 Web API 中制造了一场噩梦。但是一旦你知道它是如何工作的,你就会避免陷阱。

关于asp.net-mvc-4 - ASP.NET MVC Web Api 获取未将 QueryString 映射到强类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12589988/

相关文章:

c# - 如何从 HttpResponseMessage 读取 MultipartContent?

c# - 从 Asp.Net MVC 4 Web API 返回 View

asp.net-mvc-4 - 使用 KNOCKOUT.JS 和 ASP.NET MVC 4 进行级联下拉

javascript - 输入有效时 qTip2 验证不会消失

c# - RestSharp 连接到 WebApi - 日期时间时区问题

c# - 如何从 Web API 传递 pdf 并从 MVC Controller 读取 pdf?

c# - 结合两个正则表达式进行 ASP.NET MVC 数据注释

asp.net - 如何 "warm-up" Entity Framework ?什么时候得到 "cold"?

javascript - Angular2 服务未将 JSON 传递给 WebAPI

c# - PostAsJsonAsync 返回 500 内部错误