获得反序列化的身体没有约束力

时间:2017-11-20 20:32:16

标签: model-binding nancy

我从南希开始,我遇到了一个令人沮丧的问题。

我有一个具有ID(其他属性)的模型。

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

在我的模块中,我定义了一个PUT方法

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

我遇到的问题是,在this.Bind<MyModel>()来电时,Nancy会使用路线中的ID覆盖身体中的ID,这意味着我无法测试我的&#34;无与伦比的& #34;场景。例如:

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

MyModel绑定Id"someObjectId"

我还尝试将该财产列入黑名单:

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

但是,这会导致绑定操作清除模型中的ID属性。

我怎样才能准确了解身体内部的情况?

1 个答案:

答案 0 :(得分:0)

没关系。我做错了什么,现在它没有黑名单。我没有解释。