C# 从一个ActionResult方法切换到另一个方法并每次触发ActionFilterAttribute的正确方法是什么?
我试图在控制器中编写一些返回ActionResult的方法。每个方法都有一个属性,该属性应该在允许用户使用该方法之前运行一些验证逻辑。而在一种方法中,如果我检测到某种情况,我会尝试将数据传递给另一种方法来完成处理并返回ActionResult。我发现,在执行此操作时,输入第二个方法时,没有在第一个属性中进行验证。我想知道这是否是传递控件以生成ActionResult的错误方法,以及如何确保每次都命中属性。考虑下面的例子。C# 从一个ActionResult方法切换到另一个方法并每次触发ActionFilterAttribute的正确方法是什么?,c#,asp.net-mvc,custom-attributes,actionfilterattribute,C#,Asp.net Mvc,Custom Attributes,Actionfilterattribute,我试图在控制器中编写一些返回ActionResult的方法。每个方法都有一个属性,该属性应该在允许用户使用该方法之前运行一些验证逻辑。而在一种方法中,如果我检测到某种情况,我会尝试将数据传递给另一种方法来完成处理并返回ActionResult。我发现,在执行此操作时,输入第二个方法时,没有在第一个属性中进行验证。我想知道这是否是传递控件以生成ActionResult的错误方法,以及如何确保每次都命中属性。考虑下面的例子。 [SpecialActionFilterAttribute(Validat
[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方法到第二个ActionResult方法时,没有输入属性中的代码。此切换的全部要点是在特定情况为真时,通过ActionFilterAttribute代码强制执行。这是坏形式吗?我的方法应该是什么?中止!这不是一个好方法。您需要
返回重定向操作(…)
@StephenMuecke重定向操作
不“调用”另一个方法,它会触发完整的302重定向-听起来不像OP所寻找的。为什么要在两个方法中执行此操作?为什么不在单个操作中处理自定义验证步骤?@AlexeiLevenkov,是的,我知道,但触发filter属性是必需的。@StephenMuecke如何在调用RedirectToAction时传递视图模型?