2012-07-27 4 views
11

는 내가 NancyContextCurrentUser 속성에 액세스하는 것을 시도하고있다. Razor보기의 html 내에서 어떻게 수행합니까?면도기 뷰에서 낸시의 CurrentUser 속성에 액세스하려면 어떻게합니까?

나는 코드 조각 가능한 경우에 감사 할 것이다.

감사

편집

지금은보기 코드를 간결하고 읽기를 유지 문법 설탕과 나에게 크로스보기 데이터를 제공하는 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; 
} 

그리고보기에서 일부 면도칼 코드 : 여기

은 몇 가지 예입니다. 여기에서는 사용자가 현재 인증되지 않은 경우에만 로그인 팝업 (html)을 포함하도록 결정합니다 (Foundation Reveal).

@if (!Html.IsAuthenticated()) 
{ 
    Html.Partial("Reveals/SignInReveal"); 
} 
+0

모든 이유를 사용하여 비슷한 할 수있는 모델에요? – JefClaes

+1

예. CurrentUser 정보는 여러보기에서 사용되지만 모두는 사용할 수 없습니다. 따라서 각각의 뷰에 대해 모델을 설정하는 것을 잊지 않고 단일 재사용 장소에 중앙 집중화하는 것이 더 쉽습니다. 나는 그것이 훨씬 더 편리 나는 면도기보기 엔진 내 상황에 대해이 알고 Razor.HtmlHelpers 확장 방법 – biofractal

답변

11

당신은 Html 숙박 시설의 RenderContext 속성을 통해 NancyContext에 액세스 할 수 있습니다.

샘플 사용 : 그러나

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

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

당신이 SuperSimpleViewEngine (감사 @Sean에 코멘트)을 사용하는 경우 다음 당신은 넣지 않는 이유는

@Context.CurrentUser.UserName 
+1

를 통해 상호 뷰 데이터를 제공 찾을 수 있습니다. 그러나 누군가 나 자신과 같이 기본 SuperSimpleViewEngine 내에서이 작업을 수행하는 방법에 대한 답변을 찾고있는 동안이 게시물을 발견하면 '@ Context' 토큰을 사용하여 비슷하게 할 수 있습니다. 예 : '@ Context.CurrentUser.UserName' – ctrlplusb

관련 문제