看一下下面的代码:
当Get()
调用Foobar()
和Foobaz()
时,装饰Foobar()
和Foobaz()
的ActionFilter
不会被调用。
我如何在Get()
内调用其他两个控制器动作,同时也导致SomeAction
和AnotherAction
过滤器执行?
public class Features : Controller
{
[SomeAction]
public bool Foobar(string id = null)
{
return true;
}
[AnotherAction]
public bool Foobaz()
{
return false;
}
public JsonResult Get()
{
return this.JsonResult(new Dictionary<string, bool>()
{
{ "foobar", this.Foobar() },
{ "foobaz", this.Foobaz() }
});
}
}
控制器动作不是用来作为方法的。为了使它们正常工作,必须在请求周期内调用它们。也许您的示例过于简单,但看起来您试图将这些"操作"用作标准方法。虽然控制器在技术上可以拥有一个实际上从未打算作为路由暴露的方法,但这样做并不是一个好主意。将逻辑移到您的模型或某个助手类中。