2009-12-07 7 views
3

사용자가 특정 역할을 할 때 렌더링해야하는 부분 뷰가 몇 개 있습니다. BasePartialView I에서 지금조건부를 기반으로 부분 뷰 렌더링

<% this.RenderOnlyForRoles(list of roles) %> 

:

지금, 나는

<% if(user is in role){..here goes the html.. }%> 

같은 일을 피하려고 I합니다 (ASCX의 상단에) 할 수 있도록하고 싶습니다 RenderOnlyForRoles가 호출 될 때 채워지는 역할 목록이 있어야합니다.

문제는 RenderOnlyForRoles가 호출 된 후 .. 내가 생각할 수있는 모든 이벤트입니다. :) 그리고 컨트롤의 렌더링을 멈출 수 없습니다.

내가 원하는 것을 얻는 방법에 대한 아이디어가 있습니까?

편집 : 누구나 다른 뷰 엔진이이를 지원할 수 있는지 알고 있습니까?

답변

4

사용 HTMLHelper

public static void RenderOnlyForRoles(this HtmlHelper html, List<string> roles)) 
{ 
    if (check if user in roles) 
    { 
     html.RenderPartial(yourview); 
    } 
} 

친절,

내가 다형성을 사용하여 문제의 유형을 해결하는 경향 것
+2

동일한 게시물을 게시하고 싶습니다. 그러나 실제로 그가 시도하는 것은 아닙니다. 그는 역할 책임 체크를 부분 뷰에 명시 적으로 위임하려고합니다. –

+0

아, 그래도 논리가 컨트롤러에 있어야한다. 관련 액션 메소드의 속성일까요? –

+0

음 ... 이것은 부분보기이므로 컨트롤러를 정확히 검사해야합니까? 3 부분보기가있는보기가 있음을 의미합니다. 언제든지 하나의 부분보기 만 표시되어야합니다. – sirrocco

0

. 이 경우 렌더링 할 기본 뷰를 가질 수 있습니다.

사용자가 원하는 역할을 수행하면 구체적인보기가 렌더링됩니다. 그렇지 않으면 Null View을 기본적으로 렌더링하지 않습니다.

ASP.NET MVC 2까지 수동으로 다형 뷰를 매핑해야하지만 I recently wrote a blog post that describes how you can do that.

+1

죄송합니다.이 솔루션을 심각하게 과도하게 엔지니어링하고 있다고 생각합니다. 이 시나리오에서 작동 할 수있는 가장 간단한 작업을 수행하는 것이 좋습니다. HTML 도우미를 사용하는 것이 좋습니다. –