C# 如何防止在ASP.NET核心Web API中通过模型绑定设置属性?
我有一个带有C# 如何防止在ASP.NET核心Web API中通过模型绑定设置属性?,c#,asp.net,asp.net-core,C#,Asp.net,Asp.net Core,我有一个带有TargetUrl属性的ZapScan类,其目的是返回Url和Path属性的串联 ZapScan类也用作控制器操作中的参数,因此受模型绑定的约束: [HttpPost, FormatFilter] [Consumes("application/json", new string[]{"application/xml"})] public ActionResult<ZapScan> OnPost([FromBody] ZapScan scan) {
TargetUrl
属性的ZapScan
类,其目的是返回Url
和Path
属性的串联
ZapScan
类也用作控制器操作中的参数,因此受模型绑定的约束:
[HttpPost, FormatFilter]
[Consumes("application/json", new string[]{"application/xml"})]
public ActionResult<ZapScan> OnPost([FromBody] ZapScan scan)
{
return HandleRequest(scan);
}
[Bind]属性:
我一直在查看Bind属性,但它在ASP.NET核心Web API中似乎没有Exclude
属性
[Bind(Exclude = "Height, Width")]
也许TargetUrl上的私有setter可以帮助:
public string TargetUrl
{
get
{
return Url + Path;
}
private set;
}
另一方面,考虑到您所说的使用json的框架,也许只需要一个JsonIgnore就可以了
[JsonIgnore]
public string TargetUrl
{
get
{
return Url + Path;
}
}
这回答了你的问题吗?我相信您可以在属性上使用[BindNever]属性。如果您使用的是实体框架,则可以使用[NotMapped]attribute@HereticMonkey-是否
XmlIgnore
仅适用于序列化而不适用于数据绑定?我相信没有一个集合类似于readonly而不是private。我知道readonly比private更具限制性,但我认为这在过去对我有效。[JsonIgnore]做到了:)
[JsonIgnore]
public string TargetUrl
{
get
{
return Url + Path;
}
}