¿Cómo enlazar un modelo de solicitud en la solicitud GET de WebAPI con atributo de ruta?

GET :http://www.Example.com/Api/1/0/Book/Company/0 [Route("{UserId}/{Category}/books/{BookType}/{Page}")] [HttpGet] [RequestAuthorization] public Response Get(int UserId,string Category, string BookType,int Page ) { var books= this.contentService.GetUserItems(UserId,Category, BookType, Page) return new Response() { Status = ApiStatusCode.Ok, Books = books}; } 

El código anterior funciona bien para mí.

Mi pregunta es ¿es posible vincular un modelo de solicitud en una solicitud GET?

Por ejemplo, tengo un modelo de solicitud como este

  public class BookbRequestModel { public int UserId { get; set; } public int Category { get; set; } public int Page { get; set; } public string BookType { get; set; } } 

y quiero mi solicitud de obtención como esta

 GET :http://www.Example.com/Api/1/0/Book/Company/0 to bind the data to my request model [Route("{UserId}/{Category}/books/{BookType}/{Page}")] [HttpGet] [RequestAuthorization] public Response Get(BookbRequestModel book ) { var books= this.contentService.GetUserItems(book.UserId,book.Category,book.BookType,book.Page) return new Response() { Status = ApiStatusCode.Ok, Books = books}; } 

Intenté esto, pero cada vez que obtengo un valor nulo en mi libro (BookRequestModel)

agregue [FromUri] e intente nuevamente como se muestra abajo

 [Route("{UserId}/{Category}/books/{BookType}/{Page}")] [HttpGet] [RequestAuthorization] public Response Get(([FromUri] BookbRequestModel book ) { var books= this.contentService.GetUserItems(book.UserId,book.Category,book.BookType,book.Page) return new Response() { Status = ApiStatusCode.Ok, Books = books}; } 

para más información :-

http://www.c-sharpcorner.com/UploadFile/2b481f/parameter-binding-in-Asp-Net-web-api/

Toma los parámetros como están, no puedes hacer esto. Yo sugeriría intentar cambiar routeConfig. Añadir una nueva ruta. en WebApiConfig.cs .

 config.Routes.MapHttpRoute( name: "NewApiRoute", routeTemplate: "myapi/{Controller}/{id}", defaults: new { id = new object()//this is to make it generic you can pass object of your class also } );