如何在组件视图中使用ViewComponent参数的值而不将其作为ViewData传递?

时间:2009-09-23 13:51:24

标签: c# vici

考虑一个呈现分页导航的ViewComponent。传递给组件的参数之一是当前PageIndex(查看页面的索引)。

如何在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 个答案:

答案 0 :(得分:1)

我担心这是不可能的。视图组件的设计是以隔离的方式运行,这意味着在渲染视图组件的模板时不会秘密添加视图数据变量。

这是预期的行为。如果对视图组件的调用将所有参数作为视图数据传递给视图组件,该怎么办?当您允许最终用户创建自己的模板时,这可能会造成安全漏洞。如果他们可以调用视图组件并弄乱传递给视图组件的视图数据,则可能会产生严重的安全风险。