控制器的参数如果不标注from特性的话,是默认为fromquery吗
时间: 2024-10-28 15:06:21 浏览: 7
元器件应用中的电容器主要特性参数
在ASP.NET Core MVC中,如果控制器参数没有显式地使用`FromQuery`, `FromBody`, `FromHeader`, `FromRoute`等属性来指定来源,那么它默认假设是来自URL查询字符串(`FromQuery`)。这通常适用于接收查询参数的情况。
例如,当你在路由映射上没有提供参数绑定规则,并且在一个Action方法中有像这样的参数:
```csharp
public IActionResult Index(int id)
{
var value = id; // 这里的id默认是从URL查询字符串获取的
// ...
}
```
在这种情况下,`id`参数会被解析为查询字符串中的整数值。如果查询字符串中没有该参数,将会抛出`System.ArgumentNullException`。
然而,如果你期望接收的是请求体数据,比如JSON格式的数据,你应该使用`FromBody`属性,而不是默认的查询字符串。
```csharp
public IActionResult Post([FromBody]int id)
{
// ...
}
```
这里,如果请求头不是application/json,或者请求体中没有包含有效的json表示的整数,将会导致解析错误。
阅读全文