2009-09-23 8 views
1

페이징 탐색을 렌더링하는 ViewComponent를 고려하십시오. 구성 요소에 전달 된 매개 변수 중 하나는 현재 PageIndex (표시된 페이지의 색인)입니다.ViewData로 전달하지 않고 구성 요소의 뷰에서 ViewComponent 매개 변수의 값을 사용하려면 어떻게해야합니까?

ViewData에 넣지 않고이 ViewComponents 템플릿에서 전달 된 값을 어떻게 사용할 수 있습니까?

- ViewComponent :

[ComponentName("GalleryPager")] 
public class PagerComponent : ViewComponent 
{ 
    [Parameter("PageIndex")] 
    private int _pageIndex; 

    public void Run() 
    { 
     ... some logic ... 

     ViewData["PageIndex"] = _pageIndex; // I want to avoid this! 
    } 
} 

- 부모보기 :

... 
<span class="paging"> 
    {% GalleryPager @PageIndex = SOME_VALUE %} 
</span> 
... 

- 구성 요소보기 :이 수 없습니다 두려워

... 
<span class="page_index"> 
    {{ PageIndex }} <!-- This way it's passed/used as ViewData --> 
</span> 
... 

답변

1

. 뷰 구성 요소는 격리 된 방식으로 동작하도록 설계되었으므로 뷰 구성 요소의 템플릿을 렌더링 할 때 뷰 데이터 변수가 몰래 추가되지 않습니다.

이것은 의도 한 동작입니다. 뷰 구성 요소에 대한 호출로 모든 뷰 매개 변수가 뷰 구성 요소에 뷰 데이터로 전달되면 어떻게됩니까? 최종 사용자가 자체 템플릿을 만들도록 허용하면 보안상의 문제가 발생할 수 있습니다. 뷰 구성 요소를 호출하고 뷰 구성 요소에 전달 된 뷰 데이터를 엉망으로 만들면 심각한 보안 위험을 초래할 수 있습니다.