Ich möchte Zugriff auf den aktuellen ausführenden Controller erhalten, damit ich die Rückgabe des entsprechenden ActionResult auf eine Hilfsmethode entladen kann. Zu diesem Zweck suche ich nach dem Äquivalent von dem, was ich ControllerContext.Current hätte gedacht haben wäre aber nicht. Vielen Dank!Controller-Äquivalent von HttpContext.Current in ASP.NET MVC
Zur Klärung bearbeiten: Ich habe eine generische Formularsteuerung, die JavaScript-basiert ist, aber ich möchte eine Option hinzufügen, so dass es mit Noscript funktioniert. Momentan setzt mein Controller das ViewData.Model auf ein JSON-ified Models.FormResponse <T>.
Diese FormReponse wird mit dem Status der Post und alle Fehlermeldungen, die generiert wurden eingerichtet, so möchte ich eine GetActionResult() -Methode, die die Skript/Noscript-Überprüfung (eine versteckte Formulareingabe) und entweder:
- Setzt das Modell mit dem JSONed FormResponse und gibt einen Blick() oder
- Serialisiert das FormResponse in die Session und gibt ein Redirect().
Da dies ändert sich offensichtlich den Rückgabewert, und ich will mich nicht tun, jedes Mal, das überprüfen, ich brauche Ansicht anrufen oder vom GetActionResult des FormResponse Redirect-Methode, um dies zu nennen wie:
return formResponse.GetActionResult();
Ich weiß mit einem mehr Astronautik-Design könnte dies noch robuster gemacht werden, aber wie die Noscript-Option ist kein Hauptmerkmal im Moment, ich brauche nur eine schnelle Lösung arbeiten, die andere Dinge nicht bricht.
Update # 2
Die folgende, in einer Action Klasse implementiert, macht den Job für mich. Danke 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);
}
Wo möchten Sie diesen Zugang, aus Ihrer Sicht? –
Was ist eine generische Formularsteuerung? Ist es ein ViewUserControl? –
CVertex