gpt4 book ai didi

c# - 如何在 ASP.NET Core 中增强 ModelBinder(更新模型类的属性值)

转载 作者:行者123 更新时间:2023-11-30 17:27:49 25 4
gpt4 key购买 nike

我想增强 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。方法、属性、接口(interface)……不一样。

我应该说,如果 JSON 大小写规则可以工作就好了:

public class MyModel
{
public int Order {get;set;}
public string Title {get;set;}
}

如果 {order: 1, title: "test"}(注意小写)从 JavaScript 发送,应该可以工作。

最佳答案

这可能不是“最佳”选项,但我会使用 .ToUpper() 扩展方法而不是自定义属性过滤器。

public class MyModel
{
private string _title;
public int Order {get;set;}

public string Title { get => _title.ToUpper(); set => _title = value.ToUpper(); }
}

关于c# - 如何在 ASP.NET Core 中增强 ModelBinder(更新模型类的属性值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54308409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com