2017-11-20 3 views
0

Ich fange mit Nancy an, und ich bin in ein frustrierendes Problem geraten.Deserialisierten Körper ohne Bindung

Ich habe ein Modell, das eine ID (neben anderen Eigenschaften) hat.

public class MyModel 
{ 
    public string Id { get; set; } 
    // other properties 
} 

In meinem Modul, definierte ich eine PUT-Methode

Put["/{id}", true] = async (parameters, token) => 
{ 
    var model = this.Bind<MyModel>(); 
    string id = parameters["id"]; 
    if (model.Id != id) 
     return new Response 
     { 
      ReasonPhrase = $"[error message about IDs not matching]", 
      StatusCode = HttpStatusCode.BadRequest 
     }; 

    await _myModelService.Update(model); 
    return Nancy.Response.NoBody; 
}; 

Die Frage, die ich erlebt habe, ist, dass bei dem this.Bind<MyModel>() Anruf, Nancy die ID im Körper mit der ID in der Route überschreibt, Das heißt, ich kann mein "unerreichtes" Szenario nicht testen. Zum Beispiel:

PUT /orders/someObjectId 
{ 
    "Id" : "aDifferentObjectId" 
} 

bindet an ein MyModel mit Id als "someObjectId".

Ich habe versucht, auch die Eigenschaft, eine schwarze Liste:

  • this.Bind<MyModel>(m => m.Id)
  • this.Bind<MyModel>("id")
  • this.Bind<MyModel>("Id")
  • this.Bind<MyModel>("id", "Id")

Dies führt jedoch in der Bindeoperation die ID-Eigenschaft Clearing im Modell.

Wie bekomme ich genau das, was im Körper ist?

Antwort

0

Vergesst nicht. Ich habe etwas falsch gemacht, und jetzt funktioniert es ohne die schwarze Liste. Ich habe keine Erklärung.

Verwandte Themen