C# 如何指示控制器中的方法不是动作方法?
我想使用一个页面特定的控制器。在该控制器中,我有一个动作方法和一组助手方法。在现实生活中,helper方法继承自C# 如何指示控制器中的方法不是动作方法?,c#,asp.net-core,asp.net-core-mvc,asp.net-core-routing,C#,Asp.net Core,Asp.net Core Mvc,Asp.net Core Routing,我想使用一个页面特定的控制器。在该控制器中,我有一个动作方法和一组助手方法。在现实生活中,helper方法继承自BaseController,但为了简化操作,让我们假设我的controller类中只有一个helper方法,如下所示: [Route("/dev/test")] public class TestController : Controller { public IActionResult Get() { return UnprocessedEntityRes
BaseController
,但为了简化操作,让我们假设我的controller类中只有一个helper方法,如下所示:
[Route("/dev/test")]
public class TestController : Controller {
public IActionResult Get() {
return UnprocessedEntityResult();
}
//Some helper method that I don't want to be considered an
//action method by the routing engine.
public IActionResult UnprocessedEntityResult() {
return StatusCode(StatusCodes.Status422UnprocessableEntity);
}
}
我特别希望使用基于属性的路由,并且希望在类级别指定基于属性的路由
鉴于上述编码的情况,当访问/dev/test
路由时,将抛出模糊usactionexception
,它将指示
AmbiguousActionException:匹配了多个操作。以下操作与路线数据匹配,并满足所有约束条件:
App.Dev.TestController.GetApp.Dev.TestController.UnprocessedEntityResult 如何告诉路由引擎
UnprocessedEntityResult()
不是操作方法?我假设一定有某个属性可以应用于该方法,但我一直无法找到它。查找该属性
指示控制器方法不是操作方法
或者,您也可以使操作受到保护
[Route("/dev/test")]
public class TestController : Controller {
[HttpGet]
public IActionResult Get() {
return UnprocessedEntityResult();
}
protected IActionResult UnprocessedEntityResult() {
return StatusCode(StatusCodes.Status422UnprocessableEntity);
}
}
它对派生类型可见,但不会混淆路由表查找
非操作
属性。或者,您也可以使操作受到保护。它对派生类型可见,但不会混淆路由表
[Route("/dev/test")]
public class TestController : Controller {
[HttpGet]
public IActionResult Get() {
return UnprocessedEntityResult();
}
protected IActionResult UnprocessedEntityResult() {
return StatusCode(StatusCodes.Status422UnprocessableEntity);
}
}