InvalidOperationException: Action 'Coldairarrow.Api.Controllers.GetC_ProjectDataListController.GetC_ProjectDataList (Coldairarrow.Api)' has more than one parameter that was specified or inferred as bound from request body. Only one parameter per action ma
时间: 2024-01-21 09:17:35 浏览: 30
这个错误通常发生在 ASP.NET Core Web API 中,表示您的控制器的一个操作具有多个参数被推断为从请求正文绑定。在 Web API 中,每个操作只能有一个请求正文参数。
要解决此问题,您需要将多个参数合并为一个类或模型,并将其作为操作的单个参数。示例代码如下:
```csharp
public class ProjectDataQueryModel
{
public int Id { get; set; }
public string Name { get; set; }
// 其他属性
}
[HttpPost]
public IActionResult GetC_ProjectDataList([FromBody] ProjectDataQueryModel query)
{
// 使用 query 参数执行操作
}
```
在上面的代码中,我们创建了一个名为 `ProjectDataQueryModel` 的类,它包含了我们需要的所有参数。然后我们将其作为操作的单个参数,并使用 `[FromBody]` 特性指示 ASP.NET Core 将请求正文反序列化为该类型的对象。
当您执行 Web API 调用时,您需要将请求正文中的所有数据都包含在单个 JSON 对象中,并将其作为参数发送。例如,如果您需要获取 ID 为 1 的项目数据,则可以发送以下 JSON 数据:
```json
{
"id": 1
}
```
希望这可以帮助您解决问题!
相关问题
System.InvalidOperationException:“The entity type 'C_ProjectSearch' requires a primary key to be defined.”
这个错误通常是因为实体类型没有定义主键引起的。在EF Core中,每个实体都必须有一个主键,否则就会出现该异常。所以你需要在你的实体类中定义一个主键。你可以使用 [Key] 特性或者在 OnModelCreating 方法中使用 modelBuilder.Entity<T>().HasKey() 方法来定义主键。例如:
```
public class C_ProjectSearch
{
[Key]
public int Id { get; set; }
//其他属性
}
```
System.InvalidOperationException:“Fill: SelectCommand.Connection 属性尚未初始化。”
这个错误通常是因为没有为 SelectCommand 属性设置 Connection 属性引起的。在使用 SqlDataAdapter 填充 DataSet 或 DataTable 时,需要为 SelectCommand 属性设置一个有效的 SqlCommand 对象,并确保该对象的 Connection 属性已设置。示例代码如下:
```
SqlConnection connection = new SqlConnection(connectionString);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(queryString, connection);
```
其中,connectionString 是连接字符串,queryString 是 SQL 查询语句。请确保在使用 SqlDataAdapter 填充 DataSet 或 DataTable 之前,已经为 SelectCommand 属性设置了有效的 SqlCommand 对象,并且该对象的 Connection 属性已设置。