2014-06-06 14 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}; 
     } 

Mã trên hoạt động tốt cho tôi.Làm thế nào để ràng buộc một mô hình yêu cầu trong yêu cầu WebAPI GET với thuộc tính route?

Câu hỏi của tôi là có thể liên kết mô hình yêu cầu trong yêu cầu GET?

ví dụ tôi có một mô hình theo yêu cầu như thế này

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

và tôi muốn yêu cầu get của tôi như thế này

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

Tôi cố gắng này, nhưng mỗi lần tôi nhận được null trong cuốn sách của tôi (BookRequestModel)

Trả lời

6

thêm [FromUri] và thử lại như sau

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

để biết thêm thông tin: -

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

+0

Tôi tự hỏi bạn có thể có một phần của mô hình 'FromUri' và một phần' FromBody' không? Tôi có một vấn đề mà tôi có một mô hình 'FromBody' và một chuỗi, mô hình được xác nhận và tôi có thể kiểm tra' ModelState', nhưng tôi phải xác nhận chuỗi trên riêng của nó. ParameterBindingAttribute có thể được đặt trên các thuộc tính bên trong mô hình không? –

-3

Phải mất các thông số như chúng là bạn không thể làm điều này. Tôi sẽ đề nghị thử thay đổi routeConfig. Thêm tuyến đường mới. trong 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

Xin vui lòng, nếu bạn không biết câu trả lời, ít nhất hãy đọc các câu trả lời khác. – Dementic

Các vấn đề liên quan