2009-09-23 3 views
1

Рассмотрите компонент ViewComponent, который отображает навигацию подкачки. Одним из параметров, переданных компоненту, является текущий PageIndex (индекс просматриваемой страницы).Как я могу использовать значение параметра ViewComponent в представлении компонента, не передавая его как ViewData?

Как я могу использовать это переданное значение в моем шаблоне ViewComponents, не помещая его в ViewData?

- 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

Я боюсь, что это не возможно. Компоненты просмотра предназначены для самостоятельного поведения, что подразумевает, что при визуализации шаблона компонента представления тайно не добавляются никакие переменные данных вида.

Это предполагаемое поведение. Что делать, если вызов компонента вида передаст все параметры в компонент вида в виде данных представления? Это может создать отверстие безопасности, когда вы разрешаете конечным пользователям создавать свои собственные шаблоны. Если бы они могли вызывать компоненты вида и беспорядок с данными представления, переданными компоненту представления, вы могли бы создать серьезный риск для безопасности.