MVC-WebApi HttpGet mit komplexen Objekt

Ich habe eine vorhandene WebApi Aktion, dass ich Sie wechseln möchten, aus HttpGet HttpPost auf. Zur Zeit dauert es ein einzelner Komplex-Objekt als parameter.

Modell:

public class BarRequest
{
    [JsonProperty("catid")]
    public int CategoryId { get; set; }
}

Die Steuerung:

public class FooController : ApiController
{
    //[HttpPost]
    [HttpGet]
    [ActionName("bar")]
    public void Bar([FromUri] BarRequest request)
    {
        if (request != null)
        {
            //CategoryId should be 123, not 0
            Debug.WriteLine("Category ID :: {0}", request.CategoryId);
        }
    }
}

Wenn ich jetzt senden die folgende Anfrage funktioniert alles wie erwartet.

GET /foo/bar?CategoryId=123

Auch die alte-POST-request funktionierte wie erwartet.

POST /foo/bar {"catid":123}

Nun brauche ich aber die folgende Anforderung an die Arbeit:

GET /foo/bar?catid=123

Wie kann ich dies erreichen?

Warum nicht einfach CategoryID, dies zu tun? Oder warum gerade nicht verwenden CatID als den Namen der Eigenschaft ein, oder verwenden CatID als parameter an die Methode?
Das real-Modell hat viel mehr Eigenschaften. Eigenschaft benennen kann nicht geändert werden (Richtlinien zur Benennung auf jeder Seite - server/c# und client/js).

InformationsquelleAutor Daniel Kuppitz | 2013-03-25

Schreibe einen Kommentar