Я хотел бы получить доступ к текущему исполняющему контроллеру, чтобы я мог разгрузить возврат соответствующего ActionResult на вспомогательный метод. С этой целью я ищу эквивалент того, что, как я думал, будет ControllerContext.Current, но не является. Благодаря!Контрольный эквивалент HttpContext.Current в ASP.NET MVC
Редактировать для пояснения: У меня есть общий элемент управления формой, основанный на JavaScript, но я бы хотел добавить параметр, чтобы он работал с noscript. В настоящий момент мой контроллер устанавливает ViewData.Model в JSON-ified Models.FormResponse <T>.
Этот FormReponse настроен со статусом сообщения и любых сообщений об ошибках, которые были сгенерированы, поэтому мне нужен метод GetActionResult(), который выполняет проверку скрипта/noscript (скрытый ввод формы) и либо:
- Устанавливает модель в JSONed FormResponse и возвращает View(), или
- Сериализует FormResponse к сессии и возвращает Перенаправление().
Как это, очевидно, изменяет возвращаемое значение, и я не хочу, чтобы сделать чек себе каждый раз, мне нужно вызвать View или Перенаправление от метода GetActionResult в FormResponse для того, чтобы назвать это как:
return formResponse.GetActionResult();
Я знаю, что с более астронавтоматическим дизайном это можно сделать еще более надежным, но поскольку параметр noscript не является важной функцией на данный момент, мне просто нужно получить быстрое решение, которое не нарушит другие вещи.
Update # 2
Следующая, реализованный в классе ActionResult, делает работу для меня. Благодаря CVertex!
public override void ExecuteResult(ControllerContext context)
{
if (CMSEnvironment.NoScript)
{
Oracle.Response.Redirect(Oracle.Request.UrlReferrer.ToString(), true);
}
context.Controller.ViewData.Model = _model.ToJSON();
new ViewResult()
{
ViewName = Areas.Site.Helpers.SharedView.Service,
ViewData = context.Controller.ViewData
}.ExecuteResult(context);
}
Где вы хотите этот доступ, на ваш взгляд? –
Что такое общий контроль формы? Это ViewUserControl? –
CVertex