【发布时间】:2018-11-06 23:43:16
【问题描述】:
我正在尝试使用 Bind 属性在我的模型中仅包含特定属性。我知道我可以使用视图模型并且只指定我需要的属性,但我不能使用它,因为代码必须运行一些静态代码分析,如果 Bind 属性不存在会触发错误,我可以'不要改变那个规则(它不受我控制)。
这是我尝试过的。
型号:
[Bind("One")]
public class SomeModel
{
public int One { get; set; }
public int Two { get; set; }
}
控制器方法:
[HttpPost("foo")]
[Consumes("application/json")]
public IActionResult Foo([FromBody] SomeModel model)
{
return Json(model);
}
我在 POST 中发送的内容:
{
"One": 1,
"Two": 2
}
我得到的回应:
{
"One": 1,
"Two": 2
}
我也尝试将[Bind] 属性放在控制器方法参数之前,但它不起作用。
所以,我遇到的问题是“二”仍然被分配了一个值,即使我明确告诉我只想绑定“一”。
我做错了吗?
【问题讨论】:
-
删除 from body 属性,只在参数上使用绑定,看看是否有效
-
@Nkosi 谢谢,但我也试过了,但它不起作用。在那种情况下,我在两个属性中都得到 0,这意味着绑定根本不起作用。然后我尝试了更多组合(添加
JsonProperty属性,更改属性的大小写),但没有成功。 -
@asterite 是否满足
JsonIgnore的要求,例如` public class SomeModel { public int One { get;放; } [JsonIgnore] 公共 int 两个 { 获取;放; } } `,否则,我担心您将需要实现自己的自定义模型绑定 [docs.microsoft.com/en-us/aspnet/core/mvc/advanced/… ASP.NET Core 中的模型绑定) -
我认为该规则需要一个 Bind 属性,我无能为力。奇怪的是它不起作用...
标签: c# asp.net-core-mvc