2012-09-25 6 views
23

Die Parameteranforderung ist immer null unter Verwendung der Web-API. Fehle ich etwas mit einem stark typisierten Objekt als Parameter anstelle von einfachen Typen als Parameter.ASP.NET MVC-Web-Api Nicht-Zuordnung von Abfragezeichenfolge zu stark typisiertem Parameter

URL

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

Controller Aktion

public virtual ApiDivisionsResponse Get(ApiDivisionsRequest request) 
     { 
      return _apiDivisionsService.GetDivisions(request); 
     } 

Objekt

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

Antwort

47

ich Sie sehr stark auf r laden ead die following article, um besser zu verstehen, wie Parameterbindung in der Web-API funktioniert. Nach dem Lesen werden Sie verstehen, dass die Web-API standardmäßig Abfragezeichenketten-Parameter an primitive Typen bindet und den Inhalt von Text an komplexe Typen anfordert.

Also, wenn Sie benötigen Query-String-Parameter, um komplexe Typen zu binden, werden Sie dieses Standardverhalten außer Kraft setzen müssen, indem Sie Ihre Parameter mit dem [FromUri] Parameter Dekoration:

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

Und ja, ich stimme mit Ihnen -, dass ein ist Das Problem war, dass die Modellbindung in ASP.NET MVC so einfach war und sie einen Albtraum in der Web-API erzeugten. Aber sobald Sie wissen, wie es funktioniert, werden Sie die Fehler vermeiden.

+4

Erstellt einen Albtraum ist nicht die Hälfte davon. Scheint, dass fast alles, was die ASP.Net-Crew berührt, zum Aushängeschild für "The Stupid, It Burns!" Wird. AjaxControlToolkit, und jetzt diese Abtreibung ... – jerhewet

+1

@jerhewet Realisieren Sie, dass es einige treibende Faktoren bei der Erstellung einiger dieser lächerlichen Webformkomponenten gab. Kundennachfrage und Microsoft konkurrierten mit Angeboten aus der Java-Welt. Dieses großartige Ökosystem, das wir heute haben, hätte es vielleicht nicht gegeben, wenn es nicht die Sprungbrett für ASP.NET Webforms und andere gewesen wäre. –

Verwandte Themen