2015-10-22 1 views
1

Я пытаюсь написать некоторые методы в контроллере, которые возвращают 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, когда определенная ситуация верна. Это плохая форма? Каким должен быть мой подход?

+1

Вам понадобится 'return RedirectToAction (...)' –

+0

@StephenMuecke 'RedirectToAction' не« вызывает »другой метод, он вызывает полное перенаправление 302 - это не похоже на то, что ищет OP. –

+0

Почему вы хотите сделать это двумя способами? Почему бы не обрабатывать пользовательские шаги проверки в одном действии? –

ответ

Смежные вопросы