【发布时间】:2017-11-21 04:40:28
【问题描述】:
我从南希开始,我遇到了一个令人沮丧的问题。
我有一个具有 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,这意味着我无法测试我的“不匹配”场景。例如:
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 属性。
我怎样才能准确地知道身体里有什么?
【问题讨论】:
标签: model-binding nancy