Frage

Ich habe eine Erweiterungsklasse geschrieben, um meine AutorizeAttribute für meine Aktionsmethoden anzupassen, und ich möchte in der Lage sein, Nachrichten in meine Ansicht zu injizieren, wenn eine bestimmte Bedingung erfüllt ist. Ich benutze den folgenden Code, um eine freigegebene Ansicht zu laden, wenn ein Benutzer nicht autorisiert ist, aber meine Nachricht nicht zu meiner ViewData -Sammlung hinzufügt. Irgendwelche Ideen?

public override void OnAuthorization(AuthorizationContext filterContext)
{
    base.OnAuthorization(filterContext);
    if (IsNotAuthorized)
    {
        filterContext.Result = new ViewResult { ViewName = "NotAuthorized" };
        filterContext.Controller.ViewData["Message"] = "Go Away";
    }
}

Ich habe auch versucht, mein SEE -SECTDATA ["Message"] -Kollektelement über dem Anruf festzulegen, um die Ansicht ohne Erfolg zu ändern.

War es hilfreich?

Lösung

Hast du es versucht;

filterContext.Result = new RedirectResult("Home/Index");

Ich weiß nicht, wie man die ViewData hinzufügt, aber dies bringt Sie zumindest zum nicht autorisierten Controller.

Ich werde weiter nach Code suchen, um Daten in der Zwischenzeit anzuzeigen oder bis jemand ihn veröffentlicht.

bearbeiten

Dies kann helfen;

Ändern von ActionExecutingContext -Werten im benutzerdefinierten Filterattribut

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top