如何从 Razor 视图中访问 Nancy 的 CurrentUser 属性?
题
我正在尝试访问 CurrentUser
的财产 NancyContext
. 。如何在 Razor 视图的 html 中执行此操作?
如果可能的话,我将不胜感激代码片段。
谢谢
编辑
我现在延长 Nancy.ViewEngines.Razor.HtmlHelpers
为我提供带有语法糖的交叉视图数据,使视图代码保持简洁和可读。
这里有一些例子:
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;
}
还有一些来自视图的剃刀代码。在这里,我决定仅在用户当前未经过身份验证时才包含登录弹出窗口(Foundation Reveal)的 html - 这是有道理的。
@if (!Html.IsAuthenticated())
{
Html.Partial("Reveals/SignInReveal");
}
解决方案
您可以访问 NancyContext
通过 Html
财产的 RenderContext
财产。
示例用法:
@inherits Nancy.ViewEngines.Razor.NancyRazorViewBase<dynamic>
<p>Current User: @Html.RenderContext.Context.CurrentUser </p>
但是,如果您使用的是 SuperSimpleViewEngine(感谢评论 @肖恩)那么你可以使用类似的方法
@Context.CurrentUser.UserName
不隶属于 StackOverflow