使用FromUri将复杂对象传递到ASP.NET Web API

穆罕默德·雷汉·赛义德

我想Point使用属性路由和[FromUri]属性将URL参数绑定到我的对象,以便可以使用以下URL:

/ foo-1,2

public IHttpActionResult PostFoo(
    [FromBody] string content,
    [FromUri] Point point)
{
}

public class Point
{
    public int A { get; set; }
    public int B { get; set; }

    // ...Other properties omitted for simplicity
}

我尝试了以下Route属性,但是这些都不起作用:

[Route("foo-{a},{b}")]
[Route("foo-{A},{B}")]
[Route("foo-{point.A},{point.B}")]

请注意,我不能使用查询字符串参数,因为构建错误的第三方服务不会在其URL中接受“&”号(是的,这很糟糕)。因此,我正在尝试将所有查询字符串参数构建到URL本身。

埃里克·飞利浦

我知道的两个选项是:

使用URL重写器可以在全球范围内处理所有所有路线。优点是(我希望)您的发布者确实具有某种类型的标准url,您可以将其转换为友好的MVC路由。

如果没有,那么您可能必须编写自己的RouteHandler。不知道您是否可以在全球范围内使用它,但是您必须进行大量注册(实际上并不难)。

public class CustomRouteHandler : MvcRouteHandler
{
  protected override IHttpHandler GetHttpHandler(RequestContext requestContext)
  {
    var acceptValue = requestContext.HttpContext.Request.Headers["Accept"];

    if( /* do something with the accept value */)
    {
        // Set the new route value in the
        // requestContext.RouteData.Values dictionary
        // e.g. requestContext.RouteData.Values["action"] = "Customer";
    }

    return base.GetHttpHandler(requestContext);
  }
}

然后注册:

RouteTable.Routes.MapRoute(
  name: "Custom",
  url: "{controller}/{action}",
  defaults: new { controller = "Home", action = "Index" }
).RouteHandler = new CustomRouteHandler();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从angular js将复杂对象传递到web api,它总是返回404

来自分类Dev

将复杂的Javascript对象传递给ASP.NET Web服务

来自分类Dev

从Javascript将文件对象传递到Web API

来自分类Dev

ASP.NET WEB API 2中的复杂对象

来自分类Dev

如何将ASP.NET Web API属性路由与复杂的对象参数一起使用?

来自分类Dev

缓存Asp .Net Web API

来自分类Dev

如何从Postman将XML传递到ASP.Net核心中的Web API

来自分类Dev

如何将参数从 AngularJS $http.post 传递到 ASP .NET Web API 核心

来自分类Dev

将JSON HttpContent发布到ASP.NET Web API

来自分类Dev

将JSON HttpContent发布到ASP.NET Web API

来自分类Dev

通过AJAX将JSON对象发布到ASP.NET Core Web API

来自分类Dev

使用Asp.net Web API的AKKA.NET

来自分类Dev

.NET Web Api InvalidOperationException访问全局对象

来自分类Dev

装饰ASP.NET Web API IHttpController

来自分类Dev

ASP.net MVC Web API + Android

来自分类常见问题

从ASP.NET Web API返回HTML

来自分类Dev

视图中的ASP.NET Web Api

来自分类Dev

ASP.NET Web API操作缓存

来自分类Dev

ASP.Net Web API:添加appSettings

来自分类Dev

Web API中的ASP.NET身份

来自分类Dev

ASP.NET Web API登录方法

来自分类Dev

Web Api Asp.Net身份

来自分类Dev

验证ASP.NET Web API

来自分类Dev

ASP .NET Web API返回JSON文件

来自分类Dev

ASP.NET Web API的多个RoutePrefix

来自分类Dev

ASP.NET Web API会话数据

来自分类Dev

ASP.NET Web Api重复动词

来自分类Dev

Asp.Net Web Api Multipost参数

来自分类Dev

CORS和ASP.Net Web API