与 ASP.NET 核心选项服务绑定时忽略模型 属性
Ignore model property when binding with ASP.NET Core Options service
我正在使用选项服务来绑定分层 configuration 数据。
但是假设我有这样一个 class:
public class PersonOptions
{
public string Name { get; set; }
public int Age { get; set; }
public bool Foo { // <--- I want binder to ignore this
get {
// ... do stuff
}
}
public bool IgnoreMe => // <--- I want binder to ignore this
throw new Exception();
}
因为 Foo
属性 是 public
,活页夹运行它并触发一些抛出异常的代码。
我的设计要求它是public
,我不想把它改成方法。
是否有一些属性或覆盖我可以用来告诉活页夹忽略 属性?
您可以使用 JsonIgnore
忽略正文中的 属性:
public class PersonOptions
{
public string Name { get; set; }
public int Age { get; set; }
[JsonIgnore]
public bool Foo { get; set; }
}
参考:
Ignore individual properties
从表单中,您可以使用 Bind
属性来指定您想要的 属性 return:
public IActionResult PostData([Bind("Name,Age")][FromForm]PersonOptions data)
{}
文档 state:
All public read-write properties of the type are bound
如果 属性 是 public,则出于某种原因,活页夹 运行它 。此外,[JsonIgnore]
不受尊重。
所以除非我遗漏了一些明显的东西,否则这是不可能完成的。
解决方法是:
- 使用非public 属性
- 使用方法代替 属性
我已将功能请求添加到 repo 以支持“忽略”属性。
更新:
他们已将功能请求添加到待办事项列表中,所以我认为目前无法完成我想要的。
我正在使用选项服务来绑定分层 configuration 数据。
但是假设我有这样一个 class:
public class PersonOptions
{
public string Name { get; set; }
public int Age { get; set; }
public bool Foo { // <--- I want binder to ignore this
get {
// ... do stuff
}
}
public bool IgnoreMe => // <--- I want binder to ignore this
throw new Exception();
}
因为 Foo
属性 是 public
,活页夹运行它并触发一些抛出异常的代码。
我的设计要求它是public
,我不想把它改成方法。
是否有一些属性或覆盖我可以用来告诉活页夹忽略 属性?
您可以使用 JsonIgnore
忽略正文中的 属性:
public class PersonOptions
{
public string Name { get; set; }
public int Age { get; set; }
[JsonIgnore]
public bool Foo { get; set; }
}
参考: Ignore individual properties
从表单中,您可以使用 Bind
属性来指定您想要的 属性 return:
public IActionResult PostData([Bind("Name,Age")][FromForm]PersonOptions data)
{}
文档 state:
All public read-write properties of the type are bound
如果 属性 是 public,则出于某种原因,活页夹 运行它 。此外,[JsonIgnore]
不受尊重。
所以除非我遗漏了一些明显的东西,否则这是不可能完成的。
解决方法是:
- 使用非public 属性
- 使用方法代替 属性
我已将功能请求添加到 repo 以支持“忽略”属性。
更新:
他们已将功能请求添加到待办事项列表中,所以我认为目前无法完成我想要的。