Wie greife ich aus einer Razor-Ansicht auf Nancys CurrentUser-Eigenschaft zu?

StackOverflow https://stackoverflow.com//questions/11688451

  •  12-12-2019
  •  | 
  •  

Frage

Ich versuche, darauf zuzugreifen CurrentUser Eigentum der NancyContext.Wie mache ich das im HTML einer Razor-Ansicht?

Wenn möglich, wäre ich für einen Codeausschnitt dankbar.

Danke

Bearbeiten

Ich verlängere jetzt Nancy.ViewEngines.Razor.HtmlHelpers um mir Cross-View-Daten mit syntaktischem Zucker zu geben, die den View-Code prägnant und lesbar halten.

Hier ein paar Beispiele:

public static bool IsRegistered<T>(this HtmlHelpers<T> html)
{
    var user = GetUser(html);
    return user != null && user.IsRegistered;
}

public static bool IsAuthenticated<T>(this HtmlHelpers<T> html)
{
    return GetUser(html) != null;
}

public static User GetUser<T>(this HtmlHelpers<T> html)
{
    return (User)html.RenderContext.Context.CurrentUser;
}

Und aus einer Sicht etwas Rasiermessercode.Hier entscheide ich mich, den HTML-Code für ein Anmelde-Popup (Foundation Reveal) nur dann einzubinden, wenn der Benutzer derzeit nicht authentifiziert ist – das macht Sinn.

@if (!Html.IsAuthenticated())
{
    Html.Partial("Reveals/SignInReveal");
}  
War es hilfreich?

Lösung

Sie können darauf zugreifen NancyContext durch das Html Eigentum RenderContext Eigentum.

Ein Anwendungsbeispiel:

@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<dynamic>

<p>Current User: @Html.RenderContext.Context.CurrentUser </p>

Wenn Sie jedoch die SuperSimpleViewEngine verwenden (danke für den Kommentar an @Sean), dann können Sie Ähnliches mit dem tun

@Context.CurrentUser.UserName
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top