从一个ActionResult方法切换到另一个并每次触发ActionFilterAttribute的正确方法是什么?

本文关键字:方法 ActionFilterAttribute 是什么 另一个 一个 ActionResult | 更新日期: 2023-09-27 18:18:57

我试图在返回ActionResult的控制器中编写一些方法。每个方法上都有一个Attribute,用来在允许用户使用方法之前运行一些验证逻辑。而在一个方法中,如果我检测到某种情况,我试图将数据传递给另一个方法来完成处理并返回ActionResult。我发现,当这样做时,第二个方法正在输入,而没有首先在属性中进行验证。我想知道如果这是错误的方式来传递周围的控制来生成ActionResult和我能做些什么来确保我的属性每次都被击中。考虑下面的例子:

[SpecialActionFilterAttribute(ValidationRequirement1)]
public ActionResult Index(int id, bool handleWithOtherMethod)
{
    MyViewModelType viewModel = this.ModelRepository.GetModel(id);
    if (handleWithOtherMethod)
    {
        return Index(viewModel);
    }
    Response.StatusCode = 200;
    return View(viewModel);
}
[SpecialActionFilterAttribute(ValidationRequirement2)]
public ActionResult Index(MyViewModelType viewModel)
{
    viewModel.SomeSpecialProperty = "Some special value";
    Response.StatusCode = 200;
    return View(viewModel);
}

当我尝试上面的代码,事情似乎正确执行,但在属性的代码不输入时,从第一个ActionResult方法到第二个。这种切换的全部意义在于,当某种情况为真时,通过ActionFilterAttribute代码强制返回执行。这是不好的形式吗?我的方法应该是什么?

从一个ActionResult方法切换到另一个并每次触发ActionFilterAttribute的正确方法是什么?

中止!