Wie greife ich aus einer Razor-Ansicht auf Nancys CurrentUser-Eigenschaft zu?
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");
}
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