Я пытаюсь написать некоторые методы в контроллере, которые возвращают ActionResult. Каждый из них имеет атрибут, который должен запускать некоторую логику проверки, прежде чем позволить пользователю использовать этот метод. Хотя в одном методе, если я обнаруживаю определенную ситуацию, я пытаюсь передать данные другому методу, чтобы закончить обработку и вернуть ActionResult. То, что я нахожу, заключается в том, что при этом второй метод вводится без проверки правильности в Атрибуте. Мне интересно, если это неправильный способ передать управление для создания ActionResult и что я могу сделать, чтобы каждый раз ударять атрибут. Рассмотрим приведенный ниже пример.Каков правильный способ передачи одного метода ActionResult другому и каждый раз запускать ActionFilterAttribute?
[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, когда определенная ситуация верна. Это плохая форма? Каким должен быть мой подход?
Вам понадобится 'return RedirectToAction (...)' –
@StephenMuecke 'RedirectToAction' не« вызывает »другой метод, он вызывает полное перенаправление 302 - это не похоже на то, что ищет OP. –
Почему вы хотите сделать это двумя способами? Почему бы не обрабатывать пользовательские шаги проверки в одном действии? –