2014-06-06 6 views
5
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}; 
     } 

Il codice sopra riportato funziona correttamente.Come associare un modello di richiesta alla richiesta GET WebAPI con attributo route?

La mia domanda è possibile associare un modello di richiesta alla richiesta GET?

per esempio ho un modello di richiesta del genere

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

e voglio che la mia richiesta get come questo

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}; 
     } 

ho provato questo, ma ogni volta che mi nulla nel mio libro (BookRequestModel)

risposta

6

aggiungere [FromUri] e riprovare, come di seguito

[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}; 
      } 

per ulteriori informazioni: -

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

+0

Mi chiedo potresti avere parte del modello 'FromUri' e parte' FromBody'? Ho un problema in cui ho un modello 'FromBody' e una stringa, il modello è validato e posso controllare' ModelState', ma devo convalidare la stringa da sola. Il ParameterBindingAttribute può essere posizionato sulle proprietà all'interno del modello? –

-3

Prende i parametri così come sono non si può fare questo. Suggerirei di provare a cambiare routeConfig. Aggiungi un nuovo percorso. in 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 } 
       ); 
+0

Per favore, se non conosci la risposta, leggi almeno le altre risposte. – Dementic

Problemi correlati