Rider 无法解析 nameof(OtherClass.Method)
Rider can't resolve nameof(OtherClass.Method)
重现步骤:
- 创建一个新的 .NET Core Web API 项目
转到生成的 WeatherForecastController
,将 class 更新为
[ApiController]
[Route("[controller]")]
public class WeatherForecastController : ControllerBase
{
[HttpGet("{id}")]
public async Task<ActionResult<object>> GetById(int id)
{
return Ok(null);
}
}
创建第二个控制器
[ApiController]
[Route("[controller]")]
public class FooController : ControllerBase
{
[HttpPost]
public async Task<ActionResult<object>> Create()
{
return CreatedAtAction(nameof(WeatherForecastController.GetById), new { id = 1 }, null);
}
}
Build be project,应该没问题
骑手在Create
路线
出现错误
Cannot resolve action 'GetById'
如您所见
这很烦人,因为 IDE 也在项目浏览器中出现了它
尽管代码运行良好。那么我的代码不好吗,我应该改进它吗?这是一个错误吗?
使用了 CreatedAtAction
的错误重载。
无法解析操作 GetById
,因为使用的重载要求操作属于当前控制器(即 FooController
)。
如果预期操作属于另一个控制器,则需要包含控制器名称。
FooController:
//...
[HttpPost]
public ActionResult<object> Create() {
return CreatedAtAction(
actionName: "GetById",
controllerName: "WeatherForecast", //Note removal of `Controller` suffix
routeValues: new { id = 1 },
value: null);
}
//...
重现步骤:
- 创建一个新的 .NET Core Web API 项目
转到生成的
WeatherForecastController
,将 class 更新为[ApiController] [Route("[controller]")] public class WeatherForecastController : ControllerBase { [HttpGet("{id}")] public async Task<ActionResult<object>> GetById(int id) { return Ok(null); } }
创建第二个控制器
[ApiController] [Route("[controller]")] public class FooController : ControllerBase { [HttpPost] public async Task<ActionResult<object>> Create() { return CreatedAtAction(nameof(WeatherForecastController.GetById), new { id = 1 }, null); } }
Build be project,应该没问题
骑手在
出现错误Create
路线Cannot resolve action 'GetById'
如您所见
这很烦人,因为 IDE 也在项目浏览器中出现了它
尽管代码运行良好。那么我的代码不好吗,我应该改进它吗?这是一个错误吗?
使用了 CreatedAtAction
的错误重载。
无法解析操作 GetById
,因为使用的重载要求操作属于当前控制器(即 FooController
)。
如果预期操作属于另一个控制器,则需要包含控制器名称。
FooController:
//...
[HttpPost]
public ActionResult<object> Create() {
return CreatedAtAction(
actionName: "GetById",
controllerName: "WeatherForecast", //Note removal of `Controller` suffix
routeValues: new { id = 1 },
value: null);
}
//...