c# - 迁移到 .net 核心后,FromBody 值不会覆盖默认参数值
问题描述
我在 .Net Core 3.1 WebApi 中实现了以下端点。TestFilter 对象有一个列表参数TestTypes。TestTypes 在构造后会获得一个默认的 TestType 值。当使用 TestFilter 参数调用端点时,我希望默认值将替换为传入值。相反,它被添加到列表中,因此默认值仍然是其中的一部分。
这在使用 .Net472 时有效,但在迁移到 .Net Core 3.1 后,默认值始终是数组的一部分。
如果客户端提供了默认参数值,有没有办法指定覆盖?
[HttpPost]
[Route("test")]
public async Task<IHttpActionResult> GetTests([FromBody] TestFilter filter)
{
// Call repo
}
public class TestFilter
{
public IReadOnlyCollection<TestType> TestTypes { get; set; }
public string Description;
TestFilter() {
TestTypes = new List
{
new TestType("AdvancedTest", 10)
};
}
}
解决方案
试着改变你的TestFilter
样子:
public class TestFilter
{
public IReadOnlyCollection<TestType> TestTypes { get; set; } = new List<TestType>{new TestType("AdvancedTest", 10)};
public string Description;
}
测试类型:
public class TestType
{
public string v1 { get; set; }
public int v2 { get; set; }
public TestType() { }
public TestType(string v1, int v2)
{
this.v1 = v1;
this.v2 = v2;
}
}
更新:
我使用以下类,它可以工作。
public class TestFilter: TestBaseFilter
{
public string Description;
}
public class TestBaseFilter
{
public IReadOnlyCollection<TestType> TestTypes { get; set; } = new List<TestType> { new TestType("AdvancedTest", 10) };
}
推荐阅读
- ionic-framework - 安装 ionic cordova 插件后添加 cordova-plugin-fcm-with-dependecy-updated 我的 android 构建不工作
- javascript - 来自输入的正则表达式的反冲导致错误
- javascript - 链接或按钮设置一个变量,然后调用脚本
- sql - 什么是更好的索引架构:组合的 varchar 列或几个整数列?
- javascript - 显示日期名称而不是 Open Weather API 响应中的数字
- python - 使用整数列表删除数据帧行
- python - 在 cmd 中使用 Anaconda Python
- java - Java 找不到符号 StdIn 和 StdOut
- java - 无法编辑或更新会议室数据库条目
- python-3.x - 如何使用 requests() 和 open() 下载所有二进制文件(图像)?