【发布时间】:2019-01-22 12:33:53
【问题描述】:
我想增强 ModelBinder 返回的最终结果。
例如:
public class MyModel
{
public int Order {get;set;}
[MyUpperCaseAttribute]
public string Title {get;set;}
}
在 API 方法中,我希望 MyModel 中具有 MyUpperCaseAttribute 的所有字符串属性都是大写的。
例如:
[HttpPost("AddRecord")]
public async Task<ActionResult<int>> AddRecord(MyModel model)
{
model.Title should be upper case, even if send from client in lower case.
}
我的想法是覆盖默认 ModelBinder 并枚举所有属性并检查属性是否为字符串并具有 MyUpperCaseAttribute 并将属性值正确为大写。我检查了文档,但没有示例不正确,因为它们完全重新设计了返回的内容。我只想修改结果属性。
实现所需行为的最佳选择是什么?
重要提示:(已编辑):
如果指令属性可以堆叠就好了:
public class MyModel
{
public int Order {get;set;}
[MyUpperCaseAttribute]
[RemoveSpacesAttribute]
public string Title {get;set;}
}
已编辑:
它看起来类似于this,但如果不是其他的,这是 ASP.NET Core,而链接上只是 ASP.NET。方法、属性、接口……不一样。
我应该说,如果 JSON 大小写规则有效,那就太好了:
public class MyModel
{
public int Order {get;set;}
public string Title {get;set;}
}
如果 {order: 1, title: "test"}(注意小写)是从 JavaScript 发送的,应该可以工作。
【问题讨论】:
-
@IanKemp 不是。它谈论的是 ASP.NET Core,而不是 ASP.NET。有不同的方法、名称、接口、原理、实现......
-
有大量关于如何为 ASP.NET Core 编写模型绑定器的资源,您当然应该能够将其中之一与我链接到的答案结合起来以实现您的需求吗?跨度>
-
下划线字符串模型绑定问题讨论如何绑定一个属性。我正在搜索如何处理整个模型(更改属性值)。
-
是的,我就是这个意思。在这种情况下,反序列化将使用 JSON.NET。您可能能够在 JSON.NET 本身中找到一些东西,您可以对其进行配置以执行您想要的操作。
标签: c# asp.net-core asp.net-core-2.0